summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
authorTakuji Tanaka <ttk@t-lab.opal.ne.jp>2022-05-01 00:38:37 +0000
committerTakuji Tanaka <ttk@t-lab.opal.ne.jp>2022-05-01 00:38:37 +0000
commite213855cf4e81b2e2d2166858e3d6f3c404d649c (patch)
tree0dcff02e4fd41ae1c4d0d3eeee5e0cd79f0ce233 /Build
parentfc30b043b426f3a0a0a0addb555dece42289e193 (diff)
dvi2tty: ver6.0.2
git-svn-id: svn://tug.org/texlive/trunk@63193 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build')
-rw-r--r--Build/source/texk/dvi2tty/ChangeLog21
-rw-r--r--Build/source/texk/dvi2tty/Makefile.am27
-rw-r--r--Build/source/texk/dvi2tty/Makefile.in30
-rwxr-xr-xBuild/source/texk/dvi2tty/configure22
-rwxr-xr-xBuild/source/texk/dvi2tty/disdvi.test19
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/README.MAC11
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/README.VMS38
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/UNIXtoMacLib/getopt.c124
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/UNIXtoMacLib/macintosh.h34
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/UNIXtoMacLib/unix-to-macintosh.c460
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/disdvi.127
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/disdvi.c168
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.15
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.DCL55
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.c176
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.h20
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/dvistuff.c236
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/test/ptex1.dvibin0 -> 576 bytes
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/test/ptex1.tex15
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/test/ptex2.dvibin0 -> 608 bytes
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/test/ptex2.tex15
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/test/uptex1.dvibin0 -> 1512 bytes
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/test/uptex1.tex35
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/test/uptex2.dvibin0 -> 1500 bytes
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-src/test/uptex2.tex35
-rwxr-xr-xBuild/source/texk/dvi2tty/dvi2tty.test64
-rw-r--r--Build/source/texk/dvi2tty/output/fntdef0.tty (renamed from Build/source/texk/dvi2tty/fntdef0.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/ligtest.dis (renamed from Build/source/texk/dvi2tty/ligtest.dis)0
-rw-r--r--Build/source/texk/dvi2tty/output/ligtest.tty (renamed from Build/source/texk/dvi2tty/ligtest.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/ligtestEu.tty (renamed from Build/source/texk/dvi2tty/ligtestEu.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/ligtestu.tty (renamed from Build/source/texk/dvi2tty/ligtestu.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/ptex1.dis160
-rw-r--r--Build/source/texk/dvi2tty/output/ptex1Eu.tty9
-rw-r--r--Build/source/texk/dvi2tty/output/ptex2Eu.dis165
-rw-r--r--Build/source/texk/dvi2tty/output/table.tty (renamed from Build/source/texk/dvi2tty/table.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/tableEu.tty (renamed from Build/source/texk/dvi2tty/tableEu.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/tableEu1.tty (renamed from Build/source/texk/dvi2tty/tableEu1.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/tableEuC.tty (renamed from Build/source/texk/dvi2tty/tableEuC.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/tableEua.tty (renamed from Build/source/texk/dvi2tty/tableEua.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/tablec.tty (renamed from Build/source/texk/dvi2tty/tablec.tty)bin17181 -> 17181 bytes
-rw-r--r--Build/source/texk/dvi2tty/output/tables.tty (renamed from Build/source/texk/dvi2tty/tables.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/tableu.tty (renamed from Build/source/texk/dvi2tty/tableu.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/tableuC.tty (renamed from Build/source/texk/dvi2tty/tableuC.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/test.tty (renamed from Build/source/texk/dvi2tty/test.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/testEu.tty (renamed from Build/source/texk/dvi2tty/testEu.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/testc.tty (renamed from Build/source/texk/dvi2tty/testc.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/tests.tty (renamed from Build/source/texk/dvi2tty/tests.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/testu.tty (renamed from Build/source/texk/dvi2tty/testu.tty)0
-rw-r--r--Build/source/texk/dvi2tty/output/uptex1.dis438
-rw-r--r--Build/source/texk/dvi2tty/output/uptex1.tty25
-rw-r--r--Build/source/texk/dvi2tty/output/uptex2Eu.dis431
-rw-r--r--Build/source/texk/dvi2tty/version.ac2
52 files changed, 1656 insertions, 1211 deletions
diff --git a/Build/source/texk/dvi2tty/ChangeLog b/Build/source/texk/dvi2tty/ChangeLog
index 7b6081d3879..f2235d461d1 100644
--- a/Build/source/texk/dvi2tty/ChangeLog
+++ b/Build/source/texk/dvi2tty/ChangeLog
@@ -1,3 +1,24 @@
+2022-05-01 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ dvi2tty-6.0.2.
+ * dvi2tty.[ch], version.ac: Bump version to 6.0.2 20220501
+ Use VERSION in c-auto.h.
+ * disdvi.c: Bump version to 2.27 20220501
+ * disdvi.c: Add new options -u, -Eenc to support printing
+ multibite characters for SET[23] with PTEXENC library.
+ * dvi2tty.c: Exit with no error code by -h option.
+ * output/*.tty, output/*.dis: Moved the directory.
+ * dvi2tty.test, disdvi.test, Makefile.am,
+ test/ptex[12].{tex,dvi}, test/uptex[12].{tex,dvi},
+ output/ptex1Eu.tty, output/uptex1.tty,
+ output/ptex{1,2Eu}.dis, output/uptex{1,2Eu}.dis:
+ Add new tests.
+ * dvi2tty.1, disdvi.1: Update manuals.
+ * README.MAC, README.VMS, dvi2tty.DCL, UNIXtoMacLib/*:
+ Remove obsolete files.
+ * dvi2tty.[ch], dvistuff.c, disdvi.c:
+ Remove obsolete #defined VMS, THINK_C, AMIGA, MSDOS.
+
2022-04-09 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
dvi2tty-6.0.1.
diff --git a/Build/source/texk/dvi2tty/Makefile.am b/Build/source/texk/dvi2tty/Makefile.am
index b0d39f2c62f..20e8d947086 100644
--- a/Build/source/texk/dvi2tty/Makefile.am
+++ b/Build/source/texk/dvi2tty/Makefile.am
@@ -15,7 +15,7 @@ EXTRA_DIST += TLpatches
include $(srcdir)/../../am/dist_hook.am
NEVER_NAMES += $(NEVER_NAMES_SUB)
-AM_CPPFLAGS = $(PTEXENC_INCLUDES) $(KPATHSEA_INCLUDES) -DKPATHSEA
+AM_CPPFLAGS = $(PTEXENC_INCLUDES) $(KPATHSEA_INCLUDES) -DKPATHSEA -DPTEXENC
AM_CFLAGS = $(WARNING_CFLAGS)
LDADD = $(KPATHSEA_LIBS)
@@ -26,7 +26,9 @@ disdvi_SOURCES = \
@DVI2TTY_TREE@/commands.h \
@DVI2TTY_TREE@/disdvi.c
-$(disdvi_OBJECTS): $(KPATHSEA_DEPEND)
+$(disdvi_OBJECTS): $(KPATHSEA_DEPEND) $(PTEXENC_DEPEND)
+
+disdvi_LDADD = $(PTEXENC_LIBS) $(LDADD)
dvi2tty_SOURCES = \
@DVI2TTY_TREE@/commands.h \
@@ -57,11 +59,20 @@ AM_TESTS_ENVIRONMENT = DVI2TTY_TREE=$(DVI2TTY_TREE); export DVI2TTY_TREE;
EXTRA_DIST += $(TESTS)
## disdvi.test
-EXTRA_DIST += ligtest.dis
+EXTRA_DIST += output/ligtest.dis
+EXTRA_DIST += output/ptex1.dis output/uptex1.dis output/ptex2Eu.dis output/uptex2Eu.dis
DISTCLEANFILES = ligtest.dout
+DISTCLEANFILES += ptex1.dis uptex1.dis ptex2Eu.dis uptex2Eu.dis
## dvi2tty.test
-EXTRA_DIST += ligtest.tty test.tty testc.tty tests.tty testu.tty
-EXTRA_DIST += fntdef0.tty
-DISTCLEANFILES += ligtest.out test.out testc.out tests.out testu.out
-DISTCLEANFILES += table.out tablec.out tables.out tableu.out tableuC.out
-DISTCLEANFILES += tableEu.out tableEu1.out tableEuC.out tableEua.out
+EXTRA_DIST += output/test.tty output/testc.tty output/tests.tty output/testu.tty output/testEu.tty
+EXTRA_DIST += output/ligtest.tty output/ligtestu.tty output/ligtestEu.tty
+EXTRA_DIST += output/table.tty output/tablec.tty output/tables.tty output/tableu.tty output/tableuC.tty \
+ output/tableEu.tty output/tableEu1.tty output/tableEuC.tty output/tableEua.tty
+EXTRA_DIST += output/ptex1Eu.tty output/uptex1.tty output/fntdef0.tty
+DISTCLEANFILES += test.out testc.out tests.out testu.out testEu.out
+DISTCLEANFILES += ligtest.out ligtestu.out ligtestEu.out
+DISTCLEANFILES += table.out tablec.out tables.out tableu.out tableuC.out \
+ tableEu.out tableEu1.out tableEuC.out tableEua.out
+DISTCLEANFILES += ptex1Eu.out ptex1EuJ.out uptex1.out uptex1J.out
+DISTCLEANFILES += fntdef0.out fntdef1.out fntdef2.out fntdef3.out
+
diff --git a/Build/source/texk/dvi2tty/Makefile.in b/Build/source/texk/dvi2tty/Makefile.in
index a7aba2ccae8..073e43726d9 100644
--- a/Build/source/texk/dvi2tty/Makefile.in
+++ b/Build/source/texk/dvi2tty/Makefile.in
@@ -116,9 +116,9 @@ PROGRAMS = $(bin_PROGRAMS)
am__dirstamp = $(am__leading_dot)dirstamp
am_disdvi_OBJECTS = @DVI2TTY_TREE@/disdvi.$(OBJEXT)
disdvi_OBJECTS = $(am_disdvi_OBJECTS)
-disdvi_LDADD = $(LDADD)
am__DEPENDENCIES_1 =
-disdvi_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
+disdvi_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
@@ -126,7 +126,6 @@ am__v_lt_1 =
am_dvi2tty_OBJECTS = @DVI2TTY_TREE@/dvi2tty.$(OBJEXT) \
@DVI2TTY_TREE@/dvistuff.$(OBJEXT)
dvi2tty_OBJECTS = $(am_dvi2tty_OBJECTS)
-am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
dvi2tty_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -559,21 +558,29 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-EXTRA_DIST = $(DVI2TTY_TREE) TLpatches $(TESTS) ligtest.dis \
- ligtest.tty test.tty testc.tty tests.tty testu.tty fntdef0.tty
+EXTRA_DIST = $(DVI2TTY_TREE) TLpatches $(TESTS) output/ligtest.dis \
+ output/ptex1.dis output/uptex1.dis output/ptex2Eu.dis \
+ output/uptex2Eu.dis output/test.tty output/testc.tty \
+ output/tests.tty output/testu.tty output/testEu.tty \
+ output/ligtest.tty output/ligtestu.tty output/ligtestEu.tty \
+ output/table.tty output/tablec.tty output/tables.tty \
+ output/tableu.tty output/tableuC.tty output/tableEu.tty \
+ output/tableEu1.tty output/tableEuC.tty output/tableEua.tty \
+ output/ptex1Eu.tty output/uptex1.tty output/fntdef0.tty
NEVER_DIST = `find . $(NEVER_NAMES)`
# Files not to be distributed
NEVER_NAMES = -name .svn $(NEVER_NAMES_SUB)
NEVER_NAMES_SUB = -o -name .deps -o -name .dirstamp -o -name '*.$(OBJEXT)'
NEVER_NAMES_LT = -o -name .libs -o -name '*.lo'
-AM_CPPFLAGS = $(PTEXENC_INCLUDES) $(KPATHSEA_INCLUDES) -DKPATHSEA
+AM_CPPFLAGS = $(PTEXENC_INCLUDES) $(KPATHSEA_INCLUDES) -DKPATHSEA -DPTEXENC
AM_CFLAGS = $(WARNING_CFLAGS)
LDADD = $(KPATHSEA_LIBS)
disdvi_SOURCES = \
@DVI2TTY_TREE@/commands.h \
@DVI2TTY_TREE@/disdvi.c
+disdvi_LDADD = $(PTEXENC_LIBS) $(LDADD)
dvi2tty_SOURCES = \
@DVI2TTY_TREE@/commands.h \
@DVI2TTY_TREE@/dvi2tty.c \
@@ -588,9 +595,12 @@ man1_MANS = \
TESTS = disdvi.test dvi2tty.test
AM_TESTS_ENVIRONMENT = DVI2TTY_TREE=$(DVI2TTY_TREE); export DVI2TTY_TREE;
-DISTCLEANFILES = ligtest.dout ligtest.out test.out testc.out tests.out \
- testu.out table.out tablec.out tables.out tableu.out \
- tableuC.out tableEu.out tableEu1.out tableEuC.out tableEua.out
+DISTCLEANFILES = ligtest.dout ptex1.dis uptex1.dis ptex2Eu.dis \
+ uptex2Eu.dis test.out testc.out tests.out testu.out testEu.out \
+ ligtest.out ligtestu.out ligtestEu.out table.out tablec.out \
+ tables.out tableu.out tableuC.out tableEu.out tableEu1.out \
+ tableEuC.out tableEua.out ptex1Eu.out ptex1EuJ.out uptex1.out \
+ uptex1J.out fntdef0.out fntdef1.out fntdef2.out fntdef3.out
all: c-auto.h
$(MAKE) $(AM_MAKEFLAGS) all-am
@@ -1344,7 +1354,7 @@ uninstall-man: uninstall-man1
dist-hook:
cd "$(distdir)" && rm -rf $(NEVER_DIST)
-$(disdvi_OBJECTS): $(KPATHSEA_DEPEND)
+$(disdvi_OBJECTS): $(KPATHSEA_DEPEND) $(PTEXENC_DEPEND)
$(dvi2tty_OBJECTS): $(KPATHSEA_DEPEND) $(PTEXENC_DEPEND)
diff --git a/Build/source/texk/dvi2tty/configure b/Build/source/texk/dvi2tty/configure
index 7e169929f62..4528b8fdfae 100755
--- a/Build/source/texk/dvi2tty/configure
+++ b/Build/source/texk/dvi2tty/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for dvi2tty (TeX Live) 6.0.1.
+# Generated by GNU Autoconf 2.71 for dvi2tty (TeX Live) 6.0.2.
#
# Report bugs to <tex-k@tug.org>.
#
@@ -629,8 +629,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='dvi2tty (TeX Live)'
PACKAGE_TARNAME='dvi2tty--tex-live-'
-PACKAGE_VERSION='6.0.1'
-PACKAGE_STRING='dvi2tty (TeX Live) 6.0.1'
+PACKAGE_VERSION='6.0.2'
+PACKAGE_STRING='dvi2tty (TeX Live) 6.0.2'
PACKAGE_BUGREPORT='tex-k@tug.org'
PACKAGE_URL=''
@@ -1378,7 +1378,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 dvi2tty (TeX Live) 6.0.1 to adapt to many kinds of systems.
+\`configure' configures dvi2tty (TeX Live) 6.0.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1450,7 +1450,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of dvi2tty (TeX Live) 6.0.1:";;
+ short | recursive ) echo "Configuration of dvi2tty (TeX Live) 6.0.2:";;
esac
cat <<\_ACEOF
@@ -1571,7 +1571,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-dvi2tty (TeX Live) configure 6.0.1
+dvi2tty (TeX Live) configure 6.0.2
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2095,7 +2095,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 dvi2tty (TeX Live) $as_me 6.0.1, which was
+It was created by dvi2tty (TeX Live) $as_me 6.0.2, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@@ -8417,7 +8417,7 @@ fi
# Define the identity of the package.
PACKAGE='dvi2tty--tex-live-'
- VERSION='6.0.1'
+ VERSION='6.0.2'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -14530,7 +14530,7 @@ Usage: $0 [OPTIONS]
Report bugs to <bug-libtool@gnu.org>."
lt_cl_version="\
-dvi2tty (TeX Live) config.lt 6.0.1
+dvi2tty (TeX Live) config.lt 6.0.2
configured by $0, generated by GNU Autoconf 2.71.
Copyright (C) 2011 Free Software Foundation, Inc.
@@ -16151,7 +16151,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by dvi2tty (TeX Live) $as_me 6.0.1, which was
+This file was extended by dvi2tty (TeX Live) $as_me 6.0.2, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -16219,7 +16219,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-dvi2tty (TeX Live) config.status 6.0.1
+dvi2tty (TeX Live) config.status 6.0.2
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
diff --git a/Build/source/texk/dvi2tty/disdvi.test b/Build/source/texk/dvi2tty/disdvi.test
index 13e5d8b7fdf..73cd74cf671 100755
--- a/Build/source/texk/dvi2tty/disdvi.test
+++ b/Build/source/texk/dvi2tty/disdvi.test
@@ -5,8 +5,23 @@
# You may freely use, modify and/or distribute this file.
test_src=$srcdir/$DVI2TTY_TREE/test
+test_out=$srcdir/output
+
+rm -f *.dout
+rc=0
./disdvi $test_src/ligtest >ligtest.dout \
- && diff $srcdir/ligtest.dis ligtest.dout \
- || exit 1
+ && diff $test_out/ligtest.dis ligtest.dout \
+ || rc=1
+
+./disdvi $test_src/ptex1.dvi >ptex1.dout \
+ && diff $test_out/ptex1.dis ptex1.dout || rc=2
+./disdvi $test_src/uptex1.dvi >uptex1.dout \
+ && diff $test_out/uptex1.dis uptex1.dout || rc=3
+./disdvi -p -Eu $test_src/ptex2.dvi >ptex2Eu.dout \
+ && diff $test_out/ptex2Eu.dis ptex2Eu.dout || rc=9
+./disdvi -u -Eu $test_src/uptex2.dvi >uptex2Eu.dout \
+ && diff $test_out/uptex2Eu.dis uptex2Eu.dout || rc=10
+
+exit $rc
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/README.MAC b/Build/source/texk/dvi2tty/dvi2tty-src/README.MAC
deleted file mode 100644
index 2aa17b3055b..00000000000
--- a/Build/source/texk/dvi2tty/dvi2tty-src/README.MAC
+++ /dev/null
@@ -1,11 +0,0 @@
-Macintosh port for THINK_C
-
-Done by Alex Viskovatoff <av@mixcom.com>
-
-Guess the Makefile (if it is used by Think C)
-must be changed a bit to include the UNIXtoMacLib/
-for include files and some supporting functions.
-
-Cannot test this..
-
--Marcel Mol
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/README.VMS b/Build/source/texk/dvi2tty/dvi2tty-src/README.VMS
deleted file mode 100644
index 1d07f22389c..00000000000
--- a/Build/source/texk/dvi2tty/dvi2tty-src/README.VMS
+++ /dev/null
@@ -1,38 +0,0 @@
-README file for using dvi2tty on VAX/VMS using VAXC
-Created and submitted as a saveset by:
-
- Robert Schneider Internet: robert@perv.pe.utexas.edu
- Department of Petroleum Engineering BITNET: pefv673@utchpc
- University of Texas at Austin THEnet: PERV::ROBERT
-
- Marcel Mol
-----------------------------------
-
-dvi2tty for VAX/VMS
-
-
-This is a version of dvi2tty for VAX/VMS which may be compiled with VAXC
-and used as a filter for converting the device independent output files
-produced by TeX to files which may be printed on ASCII terminals or line
-printers. The original version of dvi2tty was written by Svante Lindahl.
-The improved C version of dvi2tty on which this port was based was done
-by Marcel Mol. Only a few minor modifications were necessary to make
-dvi2tty work under VMS with VAXC. Please see the file README. for further
-information on the authors and capabilities of dvi2tty.
-
-This saveset includes all sources which are necessary to compile and
-link dvi2tty under VMS using VAXC. Also included in the saveset are object
-files and images generated from these sources. The command file for
-building dvi2tty under VMS and the TeX documentation file for dvi2tty were
-done at The University of Texas at Austin. The TeX documentation file
-was derived from the Unix man page by tr2tex and then converted to match
-local documentation styles. Please see the "NOTE ---" comments in the
-documentation file to make the appropriate modifications for your site.
-
-If you need to rebuild the images used, simply execute VMS_VAXC_DVI2TTY.COM.
-
-
-Robert Schneider
-
-
-
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/UNIXtoMacLib/getopt.c b/Build/source/texk/dvi2tty/dvi2tty-src/UNIXtoMacLib/getopt.c
deleted file mode 100644
index a0db51e2520..00000000000
--- a/Build/source/texk/dvi2tty/dvi2tty-src/UNIXtoMacLib/getopt.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/* getopt.c
- * Modified slightly to port to Think C by AV 4.5.1993.
- */
-
-/*
- * Copyright (c) 1987 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)getopt.c 4.13 (Berkeley) 2/23/91";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "getopt.h"
-
-/*
- * get option letter from argument vector
- */
-int opterr = 1, /* if error message should be printed */
- optind = 1, /* index into parent argv vector */
- optopt; /* character checked for validity */
-char *optarg; /* argument associated with option */
-
-#define BADCH (int)'?'
-#define EMSG ""
-
-int
-getopt(nargc, nargv, ostr)
- int nargc;
- char * const *nargv;
- const char *ostr;
-{
- static char *place = EMSG; /* option letter processing */
- register char *oli; /* option letter list index */
- char *p;
- if (!*place) { /* update scanning pointer */
- if (optind >= nargc || *(place = nargv[optind]) != '-') {
- place = EMSG;
- return(EOF);
- }
- if (place[1] && *++place == '-') { /* found "--" */
- ++optind;
- place = EMSG;
- return(EOF);
- }
- } /* option letter okay? */
- if ((optopt = (int)*place++) == (int)':' ||
- !(oli = index(ostr, optopt))) {
- /*
- * if the user didn't specify '-' as an option,
- * assume it means EOF.
- */
- if (optopt == (int)'-')
- return(EOF);
- if (!*place)
- ++optind;
- if (opterr) {
- if (!(p = rindex(*nargv, '/')))
- p = *nargv;
- else
- ++p;
- (void)fprintf(stderr, "%s: illegal option -- %c\n",
- p, optopt);
- }
- return(BADCH);
- }
- if (*++oli != ':') { /* don't need argument */
- optarg = NULL;
- if (!*place)
- ++optind;
- }
- else { /* need an argument */
- if (*place) /* no white space */
- optarg = place;
- else if (nargc <= ++optind) { /* no arg */
- place = EMSG;
- if (!(p = rindex(*nargv, '/')))
- p = *nargv;
- else
- ++p;
- if (opterr)
- (void)fprintf(stderr,
- "%s: option requires an argument -- %c\n",
- p, optopt);
- return(BADCH);
- }
- else /* white space */
- optarg = nargv[optind];
- place = EMSG;
- ++optind;
- }
- return(optopt); /* dump back option letter */
-}
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/UNIXtoMacLib/macintosh.h b/Build/source/texk/dvi2tty/dvi2tty-src/UNIXtoMacLib/macintosh.h
deleted file mode 100644
index 24843f507c7..00000000000
--- a/Build/source/texk/dvi2tty/dvi2tty-src/UNIXtoMacLib/macintosh.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* macintosh.h 24.2.1996 Alex Viskovatoff
- *
- * Header file accompanying unix-to-macintosh.c.
- *
- * Written and copyright (c) 1996 by Alex Viskovatoff.
- * Permission is granted to distribute and modify this file.
- */
-
-
-#define PATHNAME_LENGTH 256
-
-#define isascii(c) (((unsigned) c) <= 0x7f)
-
-
-/* "DVI2ODVI" is equivalent to an arry of static unsigned long
- initialized to {'DVI2', 'ODVI'} - Textures and OzTeX
- type signatures of dvi files, respectively. */
-
-#define process_dvi_command_line(args) \
- docommand(args,0L,2,(unsigned long*)"DVI2ODVI")
-
-int docommand(char ***,void*,int,unsigned long*);
-void set_creator(const unsigned char *outfilename);
-int getopt(int nargc, char * const *nargv, const char *ostr);
-char *get_home_dir(void);
-char *get_file_from_dialog(void);
-pascal unsigned char not_rtf_file_p(void *parms);
-
-
-/* The following are defined in getopt.c */
-
-#define index strchr
-#define rindex strrchr
-int getopt(int nargc, char * const *nargv, const char *ostr);
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/UNIXtoMacLib/unix-to-macintosh.c b/Build/source/texk/dvi2tty/dvi2tty-src/UNIXtoMacLib/unix-to-macintosh.c
deleted file mode 100644
index f29b0334256..00000000000
--- a/Build/source/texk/dvi2tty/dvi2tty-src/UNIXtoMacLib/unix-to-macintosh.c
+++ /dev/null
@@ -1,460 +0,0 @@
-/* unix-to-macintosh.c 24.2.1996
-
- * Macintosh THINK-C file system and user interface
- * library for use by dvi2tty, disdvi, and rtf2LaTeX.
- *
- * Written and copyright (c) 1996 by Alex Viskovatoff
- * (av@mixcom.com). Permission is granted to distribute
- * and modify this file.
- */
-
-#include <MacHeaders>
-#include <string.h>
-#include "macintosh.h"
-
-
-static char home_pathname_buf[PATHNAME_LENGTH];
-
-static char *make_pathname(char *q,long dir_id, int vol_num)
-{
- CInfoPBRec directory;
- Str31 dir_name;
- int n;
- directory.dirInfo.ioDrDirID = dir_id;
- directory.dirInfo.ioVRefNum = vol_num;
- directory.dirInfo.ioFDirIndex = -1;
- directory.dirInfo.ioNamePtr = dir_name;
- for (;;directory.dirInfo.ioDrDirID = directory.dirInfo.ioDrParID) {
- *q-- = ':';
- PBGetCatInfoSync(&directory);
- for (n=*dir_name; n; n--) *q-- = (char) dir_name[n];
- if (directory.dirInfo.ioDrDirID == 2) break;
- }
- return q+1;
-}
-
-char *get_home_dir()
-{
- FCBPBRec home_dir;
- Str31 dir_name;
- Str31 apName;
- int pathRefNum;
- Handle apParam;
- char *p = home_pathname_buf+PATHNAME_LENGTH-1;
- GetAppParms(&apName,&pathRefNum,&apParam);
- home_dir.ioRefNum = pathRefNum;
- home_dir.ioFCBIndx = 0;
- home_dir.ioNamePtr = dir_name;
- PBGetFCBInfoSync(&home_dir);
- *p-- = 0;
- return make_pathname(p,home_dir.ioFCBParID,home_dir.ioFCBVRefNum);
-}
-
-pascal unsigned char not_rtf_file_p(void *parms)
-{
- StringPtr name = ((IOParam*)parms)->ioNamePtr;
- char *p, *q;
- static char extension[] = ".rtf";
- int i;
- if (name[0] < 5) return TRUE;
- for (i=4, p = (char*) name + name[0] - 3, q=extension; i; i--)
- if (*p++ != *q++) return TRUE;
- return FALSE;
-}
-
-void set_creator(const unsigned char *outfilename)
-{
- FInfo finfo;
- Str255 filename;
- StringHandle h;
- strcpy((char*)filename,(char*)outfilename);
- CtoPstr(filename);
- if (!GetFInfo(filename,0,&finfo)) {
- finfo.fdCreator = *((OSType*)*(h=GetString(128)));
- ReleaseResource(h);
- SetFInfo(filename,0,&finfo);
- }
-}
-
-
-
-/* The rest of file is a modification of the file ccomand.c (part of
- * Think C 5.0), with the function ccommand renamed to "docommand",
- * and changed to take three more arguments: a filter procedure to use
- * when displaying files in the open input file dialog, the length of
- * a list of signatures of file types that should be displayed in that
- * dialog, and a pointer to this list. Furthermore, the file creator
- * signature for the output file, which is of type 'TEXT', is now set
- * by a call to the new function set_creator. The signature is stored
- * as a string resource, and so can be modified by means of ResEdit.
- * (In the distribution, the signature used is '*TEX', that of Textures.)
- */
-
-
-/*
- * ccommand.c
- *
- * Copyright (c) 1991 Symantec Corporation. All rights reserved.
- *
- * This routine should be called from "main" as follows:
- *
- * main(int argc, char **argv)
- * {
- * argc = ccommand(&argv);
- * ...
- *
- * A dialog is presented allowing entry of command line arguments
- * and redirection of stdin/stdout.
- *
- */
-
-#include <MacHeaders>
-
-#include "stdlib.h"
-#include "errno.h"
-#include "console.h"
-#include "ansi_private.h"
-
-#define NARGS 25
-
-static char *argv[NARGS+1];
-static char argbuf[256];
-
-static void create_dialog(void);
-static Handle ditem(int);
-static void radio(int, int, int);
-static pascal void drawRing(DialogPtr, short);
-
-static Point getWhere = { 90, 82 };
-static Point putWhere = { 106, 104 };
-
-static void setfile(char *, SFReply *);
-
-static void init_command_line(char *, char *);
-static int parse(char *, char *);
-
-enum {
- cmdLine = 3,
- inCon, inFile,
- outCon, outFile, outEcho, outPrint,
- okRing,
- labelIn, labelOut, labelLine
-};
-
-static struct {
- short count;
- struct {
- Handle h;
- Rect box;
- char kind;
- } item[13];
-} itemList = { 12,
-
- /* OK */
- 0, { 176, 115, 196, 175 }, ctrlItem+btnCtrl,
-
- /* Cancel */
- 0, { 176, 225, 196, 285 }, ctrlItem+btnCtrl,
-
- /* command line */
- 0, { 141, 34, 157, 376 }, editText+itemDisable,
-
- /* (stdin) console */
- 0, { 34, 30, 50, 180 }, ctrlItem+radCtrl,
-
- /* (stdin) file */
- 0, { 54, 30, 70, 180 }, ctrlItem+radCtrl,
-
- /* (stdout) console */
- 0, { 34, 230, 50, 380 }, ctrlItem+radCtrl,
-
- /* (stdout) file */
- 0, { 54, 230, 70, 380 }, ctrlItem+radCtrl,
-
- /* (stdout) console+file */
- 0, { 74, 230, 90, 380 }, ctrlItem+radCtrl,
-
- /* (stdout) console+printer */
- 0, { 94, 230, 110, 380 }, ctrlItem+radCtrl,
-
- /* ring around OK button */
- (Handle) drawRing, { 172, 111, 200, 179 }, userItem+itemDisable,
-
- /* "Standard Input:" */
- 0, { 10, 20, 26, 170 }, statText+itemDisable,
-
- /* "Standard Output:" */
- 0, { 10, 220, 26, 370 }, statText+itemDisable,
-
- /* "Command Line:" */
- 0, { 114, 20, 130, 170 }, statText+itemDisable,
-};
-
-static DialogPtr dp;
-static Rect bounds = { 60, 51, 270, 461 };
-static int inChoice = inCon, outChoice = outCon;
-
-
-/*
- * ccommand - process "command line"
- *
- */
-
-int
-docommand(char ***av, ProcPtr file_filter, int num_types, SFTypeList type_list)
-{
- short i, argc;
- SFReply input, output, scratch;
- char buf[256];
-
- /* present dialog */
-
- cshow(stdin);
- create_dialog();
- init_command_line(buf, argbuf);
- SetCtlValue(ditem(inCon), 1);
- SetCtlValue(ditem(outCon), 1);
- ShowWindow(dp);
-
- /* engage in dialog */
-
- do {
- ModalDialog(0, &i);
- switch (i) {
- case cancel:
- abort();
- case inFile:
- SFGetFile(getWhere, "", file_filter, num_types, type_list, NULL, &scratch);
- if (!scratch.good)
- break;
- input = scratch;
- /* ... */
- case inCon:
- radio(inChoice = i, inCon, 2);
- break;
- case outFile:
- case outEcho:
- SFPutFile(putWhere, "", "", NULL, &scratch);
- if (!scratch.good)
- break;
- output = scratch;
- /* ... */
- case outCon:
- case outPrint:
- radio(outChoice = i, outCon, 4);
- break;
- }
- } while (i != ok);
-
- /* parse command line */
-
- GetIText(ditem(cmdLine), argbuf);
- sprintf(buf, "%#s", argbuf);
- argc = parse(buf, argbuf);
- *av = argv;
- DisposDialog(dp);
-
- /* redirect stdout */
-
- if (outChoice == outPrint)
- cecho2printer(stdout);
- else if (outChoice != outCon) {
- setfile((char *) scratch.fName, &output);
- if (outChoice == outFile)
- freopen((char *) scratch.fName, "w", stdout);
- else cecho2file((char *) scratch.fName, 0, stdout);
- set_creator(scratch.fName); /*** Added by av ***/
- }
-
- /* redirect stdin */
-
- if (inChoice == inFile) {
- setfile((char *) scratch.fName, &input);
- freopen((char *) scratch.fName, "r", stdin);
- }
-
- /* done */
-
- errno = 0;
- return(argc);
-}
-
-
-/* ---------- dialog utilities ---------- */
-
-
-/*
- * create_dialog - build dialog in memory
- *
- */
-
-static void
-create_dialog(void)
-{
- Handle items;
-
- asm {
- lea itemList,a0
- move.l #sizeof itemList,d0
- _PtrToHand
- move.l a0,items
- }
- dp = NewDialog(0, &bounds, "", 0, 1, (Ptr) -1, 0, 0, items);
- SetCTitle(ditem(ok), "\pOK");
- SetCTitle(ditem(cancel), "\pCancel");
- SetCTitle(ditem(inCon), "\pconsole");
- SetCTitle(ditem(inFile), "\pfile");
- SetCTitle(ditem(outCon), "\pconsole");
- SetCTitle(ditem(outFile), "\pfile");
- SetCTitle(ditem(outEcho), "\pconsole+file");
- SetCTitle(ditem(outPrint), "\pconsole+printer");
- SetIText(ditem(labelIn), "\pStandard Input:");
- SetIText(ditem(labelOut), "\pStandard Output:");
- SetIText(ditem(labelLine), "\pCommand Line:");
-}
-
-
-/*
- * ditem - return item handle
- *
- */
-
-static Handle
-ditem(int i)
-{
- short kind;
- Handle item;
- Rect box;
-
- GetDItem(dp, i, &kind, &item, &box);
- return(item);
-}
-
-
-/*
- * radio - adjust a cluster of radio buttons
- *
- */
-
-static void
-radio(int i, int j, int n)
-{
- for (; n--; j++)
- SetCtlValue(ditem(j), i == j);
-}
-
-
-/*
- * drawRing - (user-item proc) draw ring around OK button
- *
- */
-
-static pascal void
-drawRing(DialogPtr dp, short i)
-{
- PenNormal();
- PenSize(3, 3);
- FrameRoundRect(&itemList.item[okRing-1].box, 16, 16);
- PenNormal();
-}
-
-
-/* ---------- file utilities ---------- */
-
-
-/*
- * setfile - prepare to open file
- *
- */
-
-static void
-setfile(char *buf, SFReply *reply)
-{
- IOParam pb;
-
- pb.ioNamePtr = 0;
- pb.ioVRefNum = reply->vRefNum;
- PBSetVolSync(&pb);
- sprintf(buf, "%#s", reply->fName);
-}
-
-
-/* ---------- string utilities ---------- */
-
-
-/*
- * init_command_line - prepare initial command line
- *
- * The command line is preset to show the name of the program.
- * The program name is quoted as necessary.
- *
- */
-
-static void
-init_command_line(char *buf1, char *buf2)
-{
- register char *s, *t = buf2;
- int c, space = 0, dquote = 0, squote = 0, quote = 0;
-
- sprintf(s = buf1, "%#s", CurApName);
- while (c = *s++) {
- if (c == ' ')
- space = 1;
- else if (c == '"')
- dquote = 1;
- else if (c == '\'')
- squote = 1;
- }
- if (space || dquote || squote)
- *t++ = quote = dquote && !squote ? '\'' : '"';
- for (s = buf1; c = *s++; *t++ = c) {
- if (c == quote || c == '\\')
- *t++ = '\\';
- }
- if (quote)
- *t++ = quote;
- *t++ = ' ';
- *t++ = 0;
- SetIText(ditem(cmdLine), __c2p(buf2, buf1));
- SelIText(dp, cmdLine, 9999, 9999);
-}
-
-
-/*
- * parse - divide command line into "words"
- *
- * Words are delimited by one or more spaces. Any characters within
- * matching single (') or double (") quotes are taken literally. Any
- * character preceded by a backslash (\) is taken literally.
- *
- */
-
-static int
-parse(char *s, char *t)
-{
- int c, quote = 0, argc = 0;
-
- while (c = *s++) {
- if (c == ' ')
- continue;
- if (argc < NARGS)
- argv[argc++] = t;
- do {
- if (c == '\\' && *s)
- c = *s++;
- else if (c == '"' || c == '\'') {
- if (!quote) {
- quote = c;
- continue;
- }
- if (c == quote) {
- quote = 0;
- continue;
- }
- }
- *t++ = c;
- } while (*s && ((c = *s++) != ' ' || quote));
- *t++ = 0;
- }
- return(argc);
-}
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/disdvi.1 b/Build/source/texk/dvi2tty/dvi2tty-src/disdvi.1
index 21909ce76c7..d2004d01cf0 100644
--- a/Build/source/texk/dvi2tty/dvi2tty-src/disdvi.1
+++ b/Build/source/texk/dvi2tty/dvi2tty-src/disdvi.1
@@ -1,9 +1,9 @@
-.TH DISDVI 1 "25 March 2019"
+.TH DISDVI 1 "1 May 2022"
.SH NAME
disdvi \- `disassemble' a (p)TeX or XeTeX DVI file
.SH SYNOPSIS
.B disdvi
-.RB [ \-p ]
+.RB [ \-p ] [ \-u ] [ \-Eenc ]
.RI [ dvi_file [ \fB.dvi\fP ]]
.br
.B disdvi \-x
@@ -16,8 +16,27 @@ interprets the contents of
.I dvi_file
or
.I xdv_file
-printing the DVI commands and text in a human-readable ASCII format on
-the standard output.
+printing the DVI commands and text in a human-readable ASCII/multibyte
+format on the standard output.
+.PP
+.B Options:
+.PP
+.TP
+.B -p
+Handle ASCII pTeX dvi file.
+.TP
+.B -u
+Handle upTeX dvi file.
+.TP
+.B -Eenc
+Set output multibyte encoding. The enc argument 'e', 's', 'j', and 'u'
+denotes EUC-JP, Shift_JIS, ISO-2022-JP, and UTF-8, respectively.
+.TP
+.B -x
+Handle XeTeX xdv file.
+.TP
+.B -h
+Show a help massage and exit successfully.
.SH "SEE ALSO"
.BR dvi2tty (1)
.SH AUTHOR
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/disdvi.c b/Build/source/texk/dvi2tty/dvi2tty-src/disdvi.c
index eb790c0ef8e..bc9a31fb26f 100644
--- a/Build/source/texk/dvi2tty/dvi2tty-src/disdvi.c
+++ b/Build/source/texk/dvi2tty/dvi2tty-src/disdvi.c
@@ -3,7 +3,9 @@
/* disdvi --- disassembles TeX dvi files. */
/* */
/* */
-/* 2.26 23oct2010 TexLivel support pTex and XeTex */
+/* 2.27 30apr2022 TexLive support multibyte output for SET[23] */
+/* in pTeX dvi with PTEXENC library */
+/* 2.26 23oct2010 TexLive support pTeX and XeTeX */
/* 2.25 23jan2003 M.J.E. Mol fixed bug in copying font name (name[i]) */
/* 2.24 27may96 M.J.E. Mol A few typecasts added */
/* 2.23 23jul95 M.J.E. Mol Cleanups from duz@roxi.ez.fht-mannheim.de */
@@ -39,7 +41,7 @@
*
*/
-const char *disdvi = "@(#) disdvi.c 2.26 20101027 M.J.E. Mol (c) 1989-2010, marcel@mesa.nl";
+const char *disdvi = "@(#) disdvi.c 2.27 20220501 M.J.E. Mol (c) 1989-2010, marcel@mesa.nl";
/*
* Include files
@@ -56,24 +58,31 @@ const char *disdvi = "@(#) disdvi.c 2.26 20101027 M.J.E. Mol (c) 1989-2010, mar
#include <stdio.h>
#include <stdlib.h>
-#if defined(MSDOS) || defined(WIN32)
+#if defined(WIN32)
# include <fcntl.h>
#else
-# if !defined(THINK_C) /* Macintosh */
# include <unistd.h>
-# endif
#endif
#include <ctype.h>
#include <string.h>
#include "commands.h"
-#if defined(THINK_C)
-# include "macintosh.h"
-#endif
#if defined(WIN32) && defined(KPATHSEA)
#undef fopen
#define fopen fsyscp_fopen
#endif
+#if defined(PTEXENC)
+#include <kpathsea/config.h>
+#include <kpathsea/readable.h>
+#include <ptexenc/ptexenc.h>
+#include <ptexenc/unicode.h>
+
+/* internal encoding for ASCII pTeX : "euc" or "sjis" */
+#define PTEX_INTERNAL_ENC "euc"
+
+/* internal encoding for upTeX : "uptex" */
+#define UPTEX_INTERNAL_ENC "uptex"
+#endif
/*
* Constant definitions
@@ -116,6 +125,10 @@ long pc = 0;
char * progname;
int is_ptex = 0;
+#if defined(PTEXENC)
+int is_uptex = 0;
+int with_ptexenc = 0;
+#endif
int is_xetex = 0;
const char * dvi_ext = ".dvi";
@@ -123,9 +136,6 @@ const char * dvi_ext = ".dvi";
* Function declarations
*/
-#if defined(VMS)
- main (int argc, char ** argv);
-#endif
void bop (void);
void preamble (void);
void postamble (void);
@@ -143,22 +153,42 @@ void glyphs (int opcode);
void dvidir (int opcode);
void invalid (int opcode);
-
+#if defined(PTEXENC)
+int printch(int code, unsigned long ch0)
+{
+ int ch1;
+ if (with_ptexenc) {
+ printf("\"%lX", ch0);
+ if (code>1) {
+ ch1 = toBUFF(fromDVI(ch0));
+ printf(" ");
+ putc2('(', stdout);
+ if (BYTE1(ch1) != 0) putc2(BYTE1(ch1), stdout);
+ if (BYTE2(ch1) != 0) putc2(BYTE2(ch1), stdout);
+ if (BYTE3(ch1) != 0) putc2(BYTE3(ch1), stdout);
+ /* always */ putc2(BYTE4(ch1), stdout);
+ putc2(')', stdout);
+ }
+ } else {
+ printf("%ld", ch0);
+ }
+ return ch0;
+} /* main */
+#endif
/*
* MAIN --
*/
-#if defined(VMS)
- main(int argc, char **argv)
-#else
int main(int argc, char **argv)
-#endif
{
register int opcode; /* dvi opcode */
register int i;
unsigned long fontnum;
+#if defined(PTEXENC)
+ int code;
+#endif
#if defined(WIN32) && defined(KPATHSEA)
char **av, *enc;
@@ -172,19 +202,38 @@ int main(int argc, char **argv)
_setmode (fileno(stdout), _O_BINARY);
#endif
-#if defined(THINK_C)
- argc = process_disdvi_command_line(&argv);
-#endif
-
progname = *argv++;
+#if defined(PTEXENC)
+ while ((argc > 1) && (*argv[0] == '-')) {
+#else
if ((argc > 1) && (*argv[0] == '-')) {
+#endif
if (!strcmp(*argv, "-h")) {
usage();
exit(0);
}
- if (!strcmp(*argv, "-p"))
+ if (!strcmp(*argv, "-p")) {
is_ptex = 1;
+#if defined(PTEXENC)
+ set_enc_string (NULL, PTEX_INTERNAL_ENC);
+#endif
+ }
+#if defined(PTEXENC)
+ else if (!strcmp(*argv, "-u")) {
+ is_uptex = 1;
+ enable_UPTEX(true);
+ set_enc_string (NULL, UPTEX_INTERNAL_ENC);
+ }
+ else if (!strncmp(*argv, "-E", 2)) {
+ with_ptexenc = 1;
+ set_prior_file_enc();
+ if (!strcmp(*argv, "-Ee")) set_enc_string ("euc", NULL);
+ if (!strcmp(*argv, "-Es")) set_enc_string ("sjis", NULL);
+ if (!strcmp(*argv, "-Ej")) set_enc_string ("jis", NULL);
+ if (!strcmp(*argv, "-Eu")) set_enc_string ("utf8", NULL);
+ }
+#endif
else if (!strcmp(*argv, "-x")) {
is_xetex = 1;
dvi_ext = ".xdv";
@@ -198,7 +247,7 @@ int main(int argc, char **argv)
}
if (argc > 2) {
- fprintf(stderr, "To many arguments\n");
+ fprintf(stderr, "Too many arguments\n");
usage();
exit(1);
}
@@ -227,7 +276,7 @@ int main(int argc, char **argv)
else
dvifp = stdin;
-#if defined(MSDOS) || defined(WIN32)
+#if defined(WIN32)
setmode(fileno(dvifp), _O_BINARY);
#endif
@@ -243,18 +292,26 @@ int main(int argc, char **argv)
printf("%06ld: ", pc - 1);
}
- if (opcode <= LASTCHAR)
+ if (opcode <= LASTCHAR)
printnonprint(opcode); /* it must be a non-printable */
- else if ((opcode >= FONT_00) && (opcode <= FONT_63))
+ else if ((opcode >= FONT_00) && (opcode <= FONT_63))
printf("FONT_%02d /* %s */\n", opcode - FONT_00,
fontname((unsigned long) opcode - FONT_00));
else
switch (opcode) {
case SET1 :
- case SET2 :
+ case SET2 :
case SET3 :
- case SET4 : printf("SET%d: %ld\n", opcode - SET1 + 1,
+ case SET4 :
+#if defined(PTEXENC)
+ code = opcode - SET1 + 1;
+ printf("SET%d: ", code);
+ printch(code, num(code));
+ printf("\n");
+#else
+ printf("SET%d: %ld\n", opcode - SET1 + 1,
num(opcode - SET1 + 1));
+#endif
break;
case SET_RULE : printf("SET_RULE: height: %ld\n", sget4());
printf("%06ld: ", pc);
@@ -263,8 +320,16 @@ int main(int argc, char **argv)
case PUT1 :
case PUT2 :
case PUT3 :
- case PUT4 : printf("PUT%d: %ld\n", opcode - PUT1 + 1,
+ case PUT4 :
+#if defined(PTEXENC)
+ code = opcode - PUT1 + 1;
+ printf("PUT%d: ", code);
+ printch(code, num(code));
+ printf("\n");
+#else
+ printf("PUT%d: %ld\n", opcode - PUT1 + 1,
num(opcode - PUT1 + 1));
+#endif
break;
case PUT_RULE : printf("PUT_RULE: height: %ld\n", sget4());
printf("%06ld: ", pc);
@@ -276,13 +341,13 @@ int main(int argc, char **argv)
case PUSH : printf("PUSH\n"); break;
case POP : printf("POP\n"); break;
case RIGHT1 :
- case RIGHT2 :
- case RIGHT3 :
+ case RIGHT2 :
+ case RIGHT3 :
case RIGHT4 : printf("RIGHT%d: %ld\n", opcode - RIGHT1 + 1,
snum(opcode - RIGHT1 + 1));
break;
case W0 : printf("W0\n"); break;
- case W1 :
+ case W1 :
case W2 :
case W3 :
case W4 : printf("W%d: %ld\n", opcode - W0,
@@ -295,8 +360,8 @@ int main(int argc, char **argv)
case X4 : printf("X%d: %ld\n", opcode - X0,
snum(opcode - X0));
break;
- case DOWN1 :
- case DOWN2 :
+ case DOWN1 :
+ case DOWN2 :
case DOWN3 :
case DOWN4 : printf("DOWN%d: %ld\n", opcode - DOWN1 + 1,
snum(opcode - DOWN1 + 1));
@@ -311,7 +376,7 @@ int main(int argc, char **argv)
case Z0 : printf("Z0\n"); break;
case Z1 :
case Z2 :
- case Z3 :
+ case Z3 :
case Z4 : printf("Z%d: %ld\n", opcode - Z0,
snum(opcode - Z0));
break;
@@ -323,8 +388,8 @@ int main(int argc, char **argv)
opcode - FNT1 + 1, fontnum,
fontname(fontnum));
break;
- case XXX1 :
- case XXX2 :
+ case XXX1 :
+ case XXX2 :
case XXX3 :
case XXX4 : special(opcode - XXX1 + 1); break;
case FNT_DEF1 :
@@ -361,10 +426,10 @@ void bop(void)
for (i=9; i > 0; i--) {
if (i % 3 == 0)
printf("\n%06ld: ", pc);
- printf(" %6ld", sget4());
+ printf(" %6ld", sget4());
}
printf("\n%06ld: ", pc);
- printf(" prev page offset : %06ld\n", sget4());
+ printf(" prev page offset : %06ld\n", sget4());
return;
@@ -376,7 +441,7 @@ void bop(void)
* POSTAMBLE -- Process post amble.
*/
-void postamble(void)
+void postamble(void)
{
printf("POST last page offset : %06ld\n", sget4());
@@ -518,7 +583,7 @@ void fontdef(int x)
perror("fontdef");
exit(1);
}
-
+
for (i = 0; i < namelen; i++)
name[i] = get1();
name[i] = '\0';
@@ -551,7 +616,7 @@ const char * fontname(unsigned long fntnum)
return fnt->name;
return "unknown fontname";
-
+
} /* fontname */
@@ -664,8 +729,23 @@ void usage(void)
fprintf(stderr, "\n%s\n\n", disdvi);
fprintf(stderr, " disassembles (p)TeX dvi and XeTeX xdv files\n");
+#if defined(PTEXENC)
+ fprintf(stderr, "Usage: %s [-h | [-p] [-u] [-Eenc] [dvi_file[.dvi]]\n", progname);
+#else
fprintf(stderr, "Usage: %s [-h | [-p] [dvi_file[.dvi]]\n", progname);
+#endif
fprintf(stderr, " | -x [xdv_file[.xdv]]]\n");
+ fprintf(stderr, "Options:\n");
+#if defined(PTEXENC)
+ fprintf(stderr, " -p Support ASCII pTeX dvi\n");
+ fprintf(stderr, " -u Support upTeX dvi\n");
+ fprintf(stderr, " -x Support XeTeX xdv\n");
+ fprintf(stderr, " -Eenc Output multibyte encoding. The enc argument denotes u:UTF8 e:EUC-JP s:Shift_JIS j:JIS\n");
+#else
+ fprintf(stderr, " -p Support ASCII pTeX dvi\n");
+ fprintf(stderr, " -x Support XeTeX xdv\n");
+#endif
+ fprintf(stderr, " -h This help message.\n");
fprintf(stderr, "\n If you like this code and want to support is feel free\n to donate at Paypal marcel@mesa.nl. Thanks.\n\n");
@@ -743,7 +823,7 @@ void natfontdef(int opcode)
perror("fontdef");
exit(1);
}
-
+
for (i = 0; i < namelen; i++)
name[i] = get1();
name[namelen] = '\0';
@@ -805,7 +885,11 @@ void glyphs(int opcode)
void dvidir(int opcode)
{
+#if defined(PTEXENC)
+ if (!is_ptex && !is_uptex) {
+#else
if (!is_ptex) {
+#endif
invalid(opcode);
return;
}
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.1 b/Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.1
index f6c8b1f8f26..2f5caa07489 100644
--- a/Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.1
+++ b/Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.1
@@ -1,4 +1,4 @@
-.TH DVI2TTY 1 "4 March 2021"
+.TH DVI2TTY 1 "1 May 2022"
.SH NAME
dvi2tty \- preview a TeX DVI file on an ordinary ASCII terminal
.SH SYNOPSIS
@@ -146,6 +146,9 @@ denotes EUC-JP, Shift_JIS, ISO-2022-JP, and UTF-8, respectively.
.B -bdelim
Print the name of fonts when switching to it (and ending it). The delim
argument is used to delimit the fontname.
+.TP
+.B -h
+Show a help massage and exit successfully.
.SH FILES
.nr L1 \w'/bin/more \ \ \ \ '
/bin/more\h'|\n(L1u'probably the default pager.
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.DCL b/Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.DCL
deleted file mode 100644
index 637a9c2000d..00000000000
--- a/Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.DCL
+++ /dev/null
@@ -1,55 +0,0 @@
-$ !
-$ ! Compile dvi2tty for VAX/VMS under VAXC
-$ !
-$ !
-$ ! April 25, 1990
-$ !
-$ ! Robert Schneider
-$ ! Department of Petroleum Engineering
-$ ! The University of Texas at Austin
-$ ! < robert@perv.pe.utexas.edu >
-$ !
-$ SAY = "WRITE SYS$OUTPUT"
-$ ASK = "INQUIRE /NOPUNCTUATION ANSWER"
-$ !
-$ ! You can stick options for the C compiler in CC_DEFINES. As
-$ ! an example you can be redundant and define CC_DEFINES to be
-$ ! "/DEFINE=VMS".
-$ !
-$ CC_DEFINES = ""
-$ !
-$ SAY " "
-$ ASK "Compile sources? "
-$ inquire_test = ANSWER .eqs. "Y"
-$ if .not. inquire_test then goto linkstep
-$ !
-$ SAY " "
-$ SAY "Compiling sources ..."
-$ SAY " "
-$ !
-$ SAY "DVI2TTY.C ..."
-$ CC 'CC_DEFINES DVI2TTY.C
-$ SAY "DVISTUFF.C ..."
-$ CC 'CC_DEFINES DVISTUFF.C
-$ SAY "DISDVI.C ..."
-$ CC 'CC_DEFINES DISDVI.C
-$ !
-$ linkstep:
-$ SAY " "
-$ SAY "Linking dvi2tty ..."
-$ link /exe=dvi2tty.exe dvi2tty,dvistuff,sys$library:vaxcrtl/lib
-$ SAY "Linking disdvi ..."
-$ link /exe=disdvi.exe disdvi,sys$library:vaxcrtl/lib
-$ SAY " "
-$ SAY "Be sure and copy DVI2TTY.EXE to wherever you store your TeX"
-$ SAY "images and define the symbol;"
-$ SAY " "
-$ SAY "$ dvi2tty :== $path:dvi2tty.exe"
-$ SAY " "
-$ SAY "in your TeX setup command file so it may be accessed. 'path'"
-$ SAY "is the directory location where you store your TeX images."
-$ SAY " "
-$ SAY "Done."
-$ SAY " "
-$ exit
-
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.c b/Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.c
index ac63c06d48e..05175c26069 100644
--- a/Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.c
+++ b/Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.c
@@ -22,14 +22,8 @@
* Include files
*/
+#include "c-auto.h"
#include "dvi2tty.h"
-#if defined(VMS)
-# include unixio
-#endif
-#if defined(THINK_C)
-# include <unix.h>
-# include "macintosh.h"
-#endif
#if defined(WIN32) && defined(KPATHSEA)
#undef fopen
@@ -57,13 +51,8 @@
/*------------------ end of customization constants ---------------------*/
-#if defined(MSDOS) || defined(VMS) || defined(AMIGA)
-#define OPTSET "haJweEpPousltvbcANUC" /* legal options */
-#define OPTWARG "weEpPovb" /* options with argument */
-#else
#define OPTSET "haJweEpPousqlfFtvbcANUC" /* legal options */
#define OPTWARG "weEpPoFvb" /* options with argument */
-#endif
/*
* USAGE CODES
@@ -80,16 +69,13 @@
#define noarg 9 /* argument expected */
#define confl 10 /* -J, -N, -A, and -U conflict */
#define incone 11 /* inconsistent output encoding */
-#if defined(THINK_C)
-#define nored 100 /* if no input file, redirect stdin */
-#endif
/*
* Variable definitions
*/
-const char *dvi2tty = "@(#) dvi2tty.c " VERSION " 20160305 M.J.E. Mol (c) 1989-2010, and contributors (c) -2016";
+const char *dvi2tty = "@(#) dvi2tty.c " VERSION " 20220501 M.J.E. Mol (c) 1989-2010, and contributors (c) -2022";
printlisttype * currentpage; /* current page to print */
@@ -99,17 +85,12 @@ printlisttype * lastpage; /* last page selected */
FILE * DVIfile;
FILE * output;
bool outputtofile; /* tells if output goes to file or stdout */
-#if defined(THINK_C)
-bool inputfromfile; /* tells if input comes from file or stdin */
-#endif
int ttywidth; /* max nr of chars per printed line */
int espace; /* to fake calcs with ttywidth */
long foo; /* utility variable, "register" */
-#if !defined(MSDOS) && !defined(VMS) && !defined(THINK_C) && !defined(AMIGA)
bool pager; /* tells if output is piped to a pager */
const char * path; /* name of the pager to run */
-#endif
char * progname; /* our name */
int Argc;
char ** Argv;
@@ -119,24 +100,10 @@ char optch; /* for option handling */
-/*
+/*
* Function declarations
*/
-#if defined(MSDOS)
-void setoption (const char *);
-void getargs (void);
-void getpages (int, const char *);
-void plcnxt (int);
-void getfname (const char *);
-int getinteger(int *, int *, const char *);
-int getlong (long *, int *, const char *);
-void usage (int);
-#else
-
-# if defined(VMS)
- main (int argc, char ** argv);
-# endif
void setoption (const char * optarg);
void getargs (void);
void getpages (int j, const char * str);
@@ -145,7 +112,6 @@ void getfname (const char * str);
int getinteger(int * dest, int * j, const char * str);
int getlong (long * dest, int * j, const char * str);
void usage (int uerr);
-#endif
/****************************************************************************/
@@ -154,20 +120,12 @@ void usage (int uerr);
/* */
/****************************************************************************/
-#if defined(VMS)
-main(int argc, char **argv)
-#else
int main(int argc, char **argv)
-#endif
{
#if defined(WIN32) && defined(KPATHSEA)
char *enc;
#endif
-#if defined(THINK_C)
- argc = process_dvi_command_line(&argv);
-#endif
-
progname = *argv;
Argc = argc;
Argv = argv;
@@ -184,59 +142,37 @@ int main(int argc, char **argv)
set_enc_string (NULL, "default");
#endif
getargs(); /* read command line arguments */
-#if defined(THINK_C)
- if (inputfromfile) {
-#endif
-#if defined(MSDOS) || defined(WIN32)
- if ((DVIfile = fopen(DVIfilename, "rb")) == NULL)
+#if defined(WIN32)
+ if ((DVIfile = fopen(DVIfilename, "rb")) == NULL)
#else
-# if defined(VMS)
- if ((DVIfile = fopen(DVIfilename, "r","ctx=rec")) == NULL)
-# else
- if ((DVIfile = fopen(DVIfilename, "r")) == NULL)
-# endif
-#endif
- errorexit(filop); /* can't open dvifile */
-#if defined(THINK_C)
- }
- else
- DVIfile = stdin;
+ if ((DVIfile = fopen(DVIfilename, "r")) == NULL)
#endif
+ errorexit(filop); /* can't open dvifile */
if (outputtofile) { /* open the outfile, if needed */
-#if defined(MSDOS) || defined(WIN32)
+#if defined(WIN32)
if ((output = fopen(OUTfilename, "wb")) == NULL)
#else
if ((output = fopen(OUTfilename, "w")) == NULL)
#endif
errorexit(filcr);
-#if defined(THINK_C)
- else
- set_creator((unsigned char*) OUTfilename);
-#endif
-#if !defined(MSDOS) && !defined(VMS) && !defined(THINK_C)
pager = FALSE;
-#endif
}
else {
output = stdout;
-#if !defined(MSDOS) && !defined(VMS) && !defined(THINK_C)
if (pager && isatty(fileno(output))) { /* try to pipe to a pager */
if ((output = popen(path, "w")) == NULL) /* get pipe to pager */
errorexit(pipcr); /* make output to output */
}
else
pager = FALSE;
-#endif
}
dvimain();
-#if !defined(MSDOS) && !defined(VMS) && !defined(THINK_C)
if (pager)
pclose(output); /* close pipe to pager */
-#endif
exit(0);
@@ -254,22 +190,15 @@ void getargs(void)
char *envp;
bool DVIfound; /* if a dvi filename found */
-#if !defined(THINK_C)
if (Argc <= 1)
usage(ign);
-#endif
pageswitchon = FALSE; /* show all pages */
sequenceon = FALSE; /* selected pages are TeX-numbered */
outputtofile = FALSE; /* write to stdout */
-#if defined(THINK_C)
- inputfromfile = FALSE; /* read from stdin */
-#endif
-#if !defined(MSDOS) && !defined(VMS) && !defined (THINK_C) && !defined(AMIGA)
pager = WANTPAGER; /* want paging, compile time option */
-#endif
accent = TRUE; /* show all accent etc. as extra char */
- ttfont = FALSE; /* assume tt font (verbatim mode) */
+ ttfont = FALSE; /* assume tt font (verbatim mode) */
noffd = FALSE; /* print formfeed between pages */
scascii = DEFSCAND; /* scandinavian, compile time option */
latin1 = DEFLATIN1; /* latin1 support, compile time option */
@@ -282,37 +211,14 @@ void getargs(void)
compose = TRUE; /* try to compose a combining character sequence */
allchar = FALSE; /* do not put out all characters */
-#if !defined(MSDOS) && !defined(VMS) && !defined(THINK_C) && !defined(AMIGA)
if ((path = getenv("PAGER")) == NULL) /* find default pathname of page */
path = DEFPAGER; /* program in case paging is wanted */
-#endif
-
- /*
- *
- * With VAX-C under VMS getenv normally searches the environment array
- * looking for the variables HOME, TERM, PATH, and USER. In certain
- * situations getenv attempts to first perform a logical name translation
- * if none of the environment array strings are matched and then trying
- * to translate a CLI symbol. Unfortunately we need a CLI symbol defined
- * as;
- *
- * dvi2tty :== $path:dvi2tty.exe
- *
- * to invoke dvi2tty with command line arguments as it would be invoked
- * under Unix. So we use the logical DVI$DVI2TYY as the environment
- * variable from which options may be set.
- *
- */
/*
* First process environment variable.
*/
-#if defined(VMS)
- if ((envp = getenv("DVI$DVI2TTY")) != NULL) {
-#else
if ((envp = getenv("DVI2TTY")) != NULL) { /* } keep vi happy */
-#endif
while (*envp == ' ')
envp++;
while (*envp) { /* environment var args */
@@ -322,7 +228,7 @@ void getargs(void)
* so setoption does not mesh up Argv
*/
if (strchr(OPTWARG, optch) != NULL) {
- while (*envp == ' ')
+ while (*envp == ' ')
envp++;
if (*envp == '\0')
usage(noarg);
@@ -353,9 +259,6 @@ void getargs(void)
if (DVIfound) /* only one dvi file allowed */
usage(onef);
getfname(str);
-#if defined(THINK_C)
- inputfromfile =
-#endif
DVIfound = TRUE;
}
else if (strchr(OPTSET, optch = *++str) != NULL) {
@@ -372,12 +275,7 @@ void getargs(void)
}
if (!DVIfound)
-#if defined(THINK_C) /* Allow use of stdin for */
- if (isatty(fileno(stdin)))
- usage(nored); /* Mac, if redirected */
-#else
usage(ign);
-#endif
return;
@@ -392,18 +290,16 @@ void getargs(void)
void setoption(const char *optarg)
{
int j = 0;
-
+
while (strchr(OPTSET, optch) != NULL) {
switch (optch) {
- case 'h' : usage(ign); break;
-#if !defined(MSDOS) && !defined(VMS) && !defined(THINK_C) && !defined(AMIGA)
- case 'q' : pager = FALSE; break;
- case 'f' : pager = TRUE; break;
+ case 'h' : usage(ign); break;
+ case 'q' : pager = FALSE; break;
+ case 'f' : pager = TRUE; break;
case 'F' : pager = TRUE;
path = optarg;
j = strlen(optarg);
break;
-#endif
case 'J' : jautodetect = TRUE; break;
case 'U' : uptex = TRUE; japan = TRUE; /* upTeX */
jautodetect = FALSE;
@@ -418,7 +314,7 @@ void setoption(const char *optarg)
jautodetect = FALSE;
set_enc_string (NULL, JTEX_INTERNAL_ENC);
break;
- case 'E' :
+ case 'E' :
switch (optarg[0]) {
case 'e' :
set_enc_string ("euc", NULL); break;
@@ -439,12 +335,12 @@ void setoption(const char *optarg)
j++;
break;
case 't' : ttfont = TRUE; break;
- case 'l' : noffd = TRUE; break;
- case 's' : scascii ^= 1; break;
- case 'u' : latin1 ^= 1; break;
- case 'a' : accent = FALSE; break;
- case 'C' : compose = FALSE; break;
- case 'c' : allchar = TRUE; break;
+ case 'l' : noffd = TRUE; break;
+ case 's' : scascii ^= 1; break;
+ case 'u' : latin1 ^= 1; break;
+ case 'a' : accent = FALSE; break;
+ case 'C' : compose = FALSE; break;
+ case 'c' : allchar = TRUE; break;
case 'P' : sequenceon = TRUE; /* fall through */
case 'p' : if (pageswitchon)
usage(onepp);
@@ -470,7 +366,7 @@ void setoption(const char *optarg)
/* want to specify in pt, but have no getfloat */
break;
case 'o' : OUTfilename = optarg;
- outputtofile = TRUE;
+ outputtofile = TRUE;
j = strlen(optarg);
break;
case 'b' : printfont = TRUE;
@@ -497,7 +393,7 @@ void setoption(const char *optarg)
usage(confl);
}
if (((jautodetect || asciip || uptex || nttj || utf8)
- && (scascii || latin1)) ||
+ && (scascii || latin1)) ||
(scascii && latin1)) {
usage(incone);
}
@@ -508,7 +404,7 @@ void setoption(const char *optarg)
-/*
+/*
* GETPAGES -- Getr a list of pages to print.
*/
@@ -747,21 +643,15 @@ void errorexit(int errorcode)
break;
case filcr : fprintf(stderr, "Cannot create outfile\n");
break;
-#if !defined(MSDOS) && !defined(VMS) && !defined(THINK_C) && !defined(AMIGA)
case pipcr : fprintf(stderr, "Cannot create pipe to pager\n");
break;
-#endif
case bdfnt : fprintf(stderr, "Fail to get font information\n");
break;
default : fprintf(stderr, "Unkown error code\n");
break;
};
if (outputtofile)
-#if defined(VMS)
- remove(OUTfilename);
-#else
unlink(OUTfilename);
-#endif
exit(errorcode);
@@ -811,11 +701,6 @@ void usage(int uerr)
break;
case incone : fprintf(stderr, "output encoding is not consistent");
break;
-#if defined(THINK_C)
- case nored : fprintf(stderr, "\nIf no input file is given in\
- command string,\n\Standard Input must be redirected with the radio button.");
- break;
-#endif
default : fprintf(stderr, "unknown usage error");
break;
}
@@ -823,13 +708,7 @@ void usage(int uerr)
}
fprintf(stderr, "\n%s\n\n", dvi2tty);
-#if defined(THINK_C)
- fprintf(stderr, "Usage: %s [ options ] [<dvi-file>[.dvi]]\n", progname);
- fprintf(stderr, "Read input from <dvi-file>, else read from Standard Input,\
-\nwhich must be redirected by means of the radio button.\n");
-#else
fprintf(stderr, "Usage: %s [ options ] <dvi-file>[.dvi]\n", progname);
-#endif
fprintf(stderr, "Options are:\n");
fprintf(stderr,
" -ofile Write output to file, else write to stdout.\n");
@@ -843,7 +722,6 @@ void usage(int uerr)
" -vn Use n for vertical line height, default 450000.\n");
fprintf(stderr,
" -evalue Add/Substract this value for spacing (-20..20)\n");
-#if !defined(MSDOS) && !defined(VMS) && !defined(THINK_C) && !defined(AMIGA)
fprintf(stderr, " -f Try to pipe to a pager if output is a tty");
if (WANTPAGER)
fprintf(stderr, " (default).\n");
@@ -855,7 +733,6 @@ void usage(int uerr)
else
fprintf(stderr, " (default).\n");
fprintf(stderr, " -Fprog Pipe output to pager prog.\n");
-#endif
fprintf(stderr,
" -a Remove accents grave etc. from output: \\'{e} -> e.\n");
fprintf(stderr,
@@ -886,8 +763,9 @@ void usage(int uerr)
fprintf(stderr, " -h This help message.\n");
fprintf(stderr, "\n If you like this code and want to support is feel free\n to donate at Paypal marcel@mesa.nl. Thanks.\n\n");
-
- exit(uerr);
+ if (uerr != ign)
+ exit(uerr);
+ exit(0);
} /* usage */
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.h b/Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.h
index 497072f7181..ddd92563217 100644
--- a/Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.h
+++ b/Build/source/texk/dvi2tty/dvi2tty-src/dvi2tty.h
@@ -18,8 +18,6 @@
*
*/
-#define VERSION "6.0.0"
-
#define Progname "dvi2tty"
#define Copyright "Copyright (C) 1984, 1985, 1986 Svante Lindahl.\n\
Copyright (C) 1989-2010 M.J.E. Mol, MESA Consulting B.V."
@@ -42,12 +40,8 @@ Copyright (C) 1989-2010 M.J.E. Mol, MESA Consulting B.V."
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
-#if defined(MSDOS) || (defined(WIN32) && !defined(__MINGW32__))
+#if (defined(WIN32) && !defined(__MINGW32__))
# include <malloc.h>
-#else
-# if !defined(THINK_C)
-# include <unistd.h>
-# endif
#endif
#define nil NULL
@@ -56,7 +50,7 @@ Copyright (C) 1989-2010 M.J.E. Mol, MESA Consulting B.V."
* Define the maximum width of the terminal
* (this is also used to define the with of the line structure in dvistuff.c)
*/
-#define MAXTERMWIDTH 332
+#define MAXTERMWIDTH 332
#include <ptexenc/ptexenc.h>
#include <ptexenc/unicode.h>
@@ -93,9 +87,7 @@ Copyright (C) 1989-2010 M.J.E. Mol, MESA Consulting B.V."
#define illch 17 /* character code out of range */
#define filop 18 /* cannot access file */
#define filcr 19 /* cannot creat file */
-#if !defined(MSDOS)
#define pipcr 20 /* cannot creat pipe */
-#endif
#define bdfnt 21 /* fail to get font info */
@@ -159,15 +151,7 @@ extern FILE *output; /* output file (dvi2tty.c) */
*/
/* dvi2tty.c */
-#if defined(MSDOS)
-void errorexit(int);
-#else
void errorexit(int errorcode);
-#endif
/* dvistuff.c */
-#if defined(MSDOS)
-void dvimain(void);
-#else
void dvimain(void);
-#endif
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/dvistuff.c b/Build/source/texk/dvi2tty/dvi2tty-src/dvistuff.c
index a0f1c6d744c..da0024d232d 100644
--- a/Build/source/texk/dvi2tty/dvi2tty-src/dvistuff.c
+++ b/Build/source/texk/dvi2tty/dvi2tty-src/dvistuff.c
@@ -24,21 +24,8 @@
#include "dvi2tty.h"
-#if defined(VMS)
-# include types.h
-# include stat
-#else
-# if defined(THINK_C)
-# include <unix.h>
-# else
-# include <sys/types.h>
-# include <sys/stat.h>
-# endif
-#endif
-
-#if defined(MSDOS) || defined(THINK_C)
-# include <math.h>
-#endif
+#include <sys/types.h>
+#include <sys/stat.h>
#include "commands.h"
#include "tex2ucs.h"
@@ -48,20 +35,15 @@
* Constant definitions
*/
-#if defined(VMS)
-#define mseek vmsseek
-#define ROUND(a) (a>=0.0 ? (int) (a + 0.5) : (int) (a - 0.5) )
-#else
#define mseek fseek
-#endif
#define VERSIONID 2 /* dvi version number that pgm handles */
#define VERTICALEPSILON 450000L /* crlf when increasing v more than this */
-#define rightmargin MAXTERMWIDTH+20
+#define rightmargin MAXTERMWIDTH+20
/* nr of columns allowed to the right of h=0*/
#define leftmargin -50 /* give some room for negative h-coordinate */
-#define LINELEN rightmargin - leftmargin + 1
+#define LINELEN rightmargin - leftmargin + 1
#define MOVE TRUE /* if advancing h when outputing a rule */
#define STAY FALSE /* if not advancing h when outputing a rule */
@@ -96,7 +78,7 @@
* Structure and variable definitions
*/
-const char *dvistuff = "@(#) dvistuff.c " VERSION " 20101027 M.J.E. Mol (c) 1989-2010";
+/* const char *dvistuff = "@(#) dvistuff.c " VERSION " 20101027 M.J.E. Mol (c) 1989-2010"; */
typedef struct {
long hh;
@@ -196,43 +178,6 @@ int kanji1 = 0; /* number of rest of trailer bytes in kanji character */
* Function definitions
*/
-#if defined(MSDOS)
-void postamble (void);
-void preamble (void);
-void walkpages (void);
-void initpage (void);
-void dopage (void);
-void skippage (void);
-void printpage (void);
-bool inlist (long);
-void rule (bool, long, long);
-void ruleaux (long, long, char);
-long horizontalmove (long);
-int skipnops (void);
-linetype * my_getline (void);
-linetype * findline (void);
-unsigned long num (int);
-long snum (int);
-void dochar (unsigned char);
-void symchar (unsigned char);
-void michar (unsigned char);
-void normchar (char, unsigned char);
-void t1char (unsigned char);
-void ts1char (unsigned char);
-void ot2char (unsigned char);
-void t2char (char, unsigned char);
-void outchar (long);
-void putcharacter (long);
-void setchar (long);
-void fontdef (int);
-void setfont (long);
-void jischar (unsigned long);
-int compute_jis (int, unsigned int, unsigned int *, unsigned int *);
-void dounichar (long);
-void dokanji (long);
-int getjsubfont (char *);
-
-#else
void postamble (void);
void preamble (void);
void walkpages (void);
@@ -267,12 +212,6 @@ void compute_jis (int f, unsigned int c, unsigned int * ku, unsig
void dounichar (long ch);
void dokanji (long ch);
int getjsubfont (char * s);
-#if defined(VMS)
-long vmsseek ();
-long vms_ftell ();
-long vms_ungetc ();
-#endif
-#endif
@@ -304,19 +243,9 @@ void postamble(void)
{
register long size;
register int count;
-#if !defined (THINK_C) && defined(VMS)
- struct stat st;
-#endif
-#if defined (THINK_C)
- size = DVIfile->len;
-#elif defined(VMS)
- fstat (fileno(DVIfile), &st);
- size = (long) st.st_size; /* get size of file */
-#else
fseek (DVIfile, 0L, SEEK_END);
size = ftell (DVIfile); /* get size of file */
-#endif
count = -1;
do { /* back file up past signature bytes (223), to id-byte */
@@ -339,7 +268,7 @@ void postamble(void)
mseek(DVIfile, 20L, relative); /* lastpageoffset, numerator, denominator */
/* magnification, maxpageheight */
maxpagewidth = sget4();
- charwidth = maxpagewidth / (ttywidth + espace);
+ charwidth = maxpagewidth / (ttywidth + espace);
stackmax = (int) get2();
if ((stack = (stackitem *) malloc(stackmax * sizeof(stackitem))) == NULL)
errorexit(stkrq);
@@ -713,7 +642,7 @@ void printpage(void)
}
putc2(ch, output);
}
- else
+ else
putc(ch, output);
}
if ((j > (int) foo) && (currentline->charactercount > i+1)) {
@@ -729,13 +658,13 @@ void printpage(void)
}
j = 2;
}
- }
+ }
}
if (japan)
putc2('\n', output);
- else
+ else
putc('\n', output);
- }
+ }
currentline = firstline;
while (currentline->next != nil) {
@@ -781,7 +710,7 @@ bool inlist(long pagenr)
* RULE -- Output a rule (vertical or horizontal).
* Increment h if moving is true.
*/
-
+
void rule(bool moving, long rulewt, long ruleht)
{
@@ -858,11 +787,7 @@ long horizontalmove(long amount)
if (amount > 0)
amount = ((amount+foo) / charwidth) * charwidth;
else
-#if defined(VMS)
- amount = (ROUND( (float) (amount-foo) / charwidth) + 1)* charwidth;
-#else
amount = ((amount-foo) / charwidth) * charwidth;
-#endif
h += amount;
return amount;
}
@@ -1052,7 +977,7 @@ void dounichar(long ch)
/*
* DOKANJI -- Process a kanji character opcode.
*/
-
+
void dokanji(long ch)
{
long i;
@@ -1377,7 +1302,7 @@ void normchar(char flag, unsigned char ch)
case 39 : /* ' */
case 96 : c[0] = ch; break; /* ` */
- /* diacritical marks */
+ /* diacritical marks */
case 18 : c[0] = '`' ; break; /* grave from \` */
case 19 : c[0] = latin1 ? 0xb4 : '\''; break;
/* acute from \' */
@@ -1629,7 +1554,7 @@ void t1char(unsigned char ch)
case 0xfc: c[0] = '"'; c[1] ='u'; break; /* "u */
case 0xfd: c[0] = '\''; c[1] ='y'; break; /* 'y */
- /* diacritical marks */
+ /* diacritical marks */
case 0x00: c[0] = '`' ; break; /* grave from \` */
case 0x01: c[0] = latin1 ? 0xb4 : '\''; break;
/* acute from \' */
@@ -1764,7 +1689,7 @@ void ts1char(unsigned char ch)
case 0x38: case 0x39: case 0x3A: case 0x3B:
c[0] = ch; break;
- /* diacritical marks */
+ /* diacritical marks */
case 0x00: c[0] = '`' ; break; /* grave from \` */
case 0x01: c[0] = latin1 ? 0xb4 : '\''; break;
/* acute from \' */
@@ -1878,7 +1803,7 @@ void t2char(char flag, unsigned char ch)
case 0xBF: c[0] = '>'; c[1] = '>'; /* \guillemotright */
break;
- /* diacritical marks */
+ /* diacritical marks */
case 0x00: c[0] = '`' ; break; /* grave from \` */
case 0x01: c[0] = latin1 ? 0xb4 : '\''; break;
/* acute from \' */
@@ -1978,8 +1903,8 @@ void ot2char(unsigned char ch)
case 0x60: c[0] = '\''; break; /* \textquoteleft */
case 0x22: /* \textquotedblright */
case 0x5C: c[0] = '"'; break; /* \textquotedblleft */
-
- /* diacritical marks */
+
+ /* diacritical marks */
case 0x20: c[0] = '"' ; break; /* diaeresis from \" */
case 0x24: c[0] = '~' ; break; /* breve from \u */
case 0x26: c[0] = latin1 ? 0xb4 : '\''; break;
@@ -2073,7 +1998,7 @@ void outchar(long ch)
}
}
if (!allchar && compose && (latin1 || utf8)) {
- if (strchr("aAeEiIoOuUnCcNYy", ch) != NULL || (ch & MAX_UNICODE) == 0x131) {
+ if (strchr("aAeEiIoOuUnCcNYy", ch) != NULL || (ch & MAX_UNICODE) == 0x131) {
for (i = IMAX(leftmargin, j-2);
i <= IMIN(rightmargin, j+2);
i++) {
@@ -2177,10 +2102,10 @@ void outchar(long ch)
if (foo == leftmargin-1) {
if (japan) {
while (((currentline->text[j - leftmargin] != SPACE) ||
- (kanji1 && (currentline->text[j+kanji1 - leftmargin] != SPACE)))
+ (kanji1 && (currentline->text[j+kanji1 - leftmargin] != SPACE)))
&& (j < rightmargin)) {
- j++;
- h += charwidth;
+ j++;
+ h += charwidth;
}
} else {
while (j < rightmargin &&
@@ -2192,7 +2117,6 @@ void outchar(long ch)
}
if ( allchar || ((ch >= SPACE) && (ch != DEL)) ||
((latin1 || scascii) && (ch == 23)) ) {
- /* ((latin1 || scascii) && (ch == DEL)) ) if VMS ??? */
if (j < rightmargin)
currentline->text[j - leftmargin] = ch;
else
@@ -2255,7 +2179,7 @@ void setchar(long charnr)
static const char *ptex_fontchk[] = {
"min", "goth", "jis",
"hmin", "hgoth", "hmgoth", /* japanese-otf package */
- "nmlmin", "nmlgoth", "nmlmgoth",
+ "nmlmin", "nmlgoth", "nmlmgoth",
"hiramin", "hirakaku", "hiramaru",
NULL /* end */
};
@@ -2264,7 +2188,7 @@ static const char *uptex_fontchk[] = {
"umin", "ugoth", "ujis",
"upjis", "upjpn", "upsch", "uptch", "upkor",
"uphmin", "uphgoth", "uphmgoth", /* japanese-otf package */
- "upnmlmin", "upnmlgoth", "upnmlmgoth",
+ "upnmlmin", "upnmlgoth", "upnmlmgoth",
"uphiramin", "uphirakaku", "uphiramaru",
NULL /* end */
};
@@ -2325,10 +2249,10 @@ void fontdef(int x)
perror("fontdef");
exit(40);
}
-
+
for (i = 0; i < namelen; i++)
name[i] = get1();
- name[i] = '\0'; /* properly end string */
+ name[i] = '\0'; /* properly end string */
fnt->name = name;
if (new) {
fnt->next = fonts;
@@ -2484,7 +2408,7 @@ void setfont(long fntnum)
while (*d) {putcharacter(*d); d++;}
while (*s) {putcharacter(*s); s++;}
while (d-- > delim) {putcharacter(*d);}
- }
+ }
return;
@@ -2505,7 +2429,7 @@ void jischar(unsigned long ch)
return;
} /* jischar */
-
+
#define kushift(c) c+0x20
#define tenshift(c) c+0x20
@@ -2548,107 +2472,3 @@ void compute_jis(int f, unsigned int c, unsigned int *ku, unsigned int *ten)
} /* compute_jis */
-
-
-/*
- * VMS CODE
- */
-
-#if defined(VMS)
-long vmsseek(fp,n,dir)
-FILE *fp;
-long n;
-long dir;
-{
- long k,m,pos,val,oldpos;
- struct stat buffer;
-
- for (;;) { /* loops only once or twice */
- switch (dir) {
- case 0: /* from BOF */
- oldpos = vms_ftell(fp);
- k = n & 511;
- m = n >> 9;
- if (((*fp)->_cnt) && ((oldpos >> 9) == m)) {
- val = 0; /* still in */
- (*fp)->_ptr = ((*fp)->_base) + k;
- (*fp)->_cnt = 512 - k;
- }
- else {
- val = fseek(fp, m << 9, 0);
- if (val == 0) {
- (*fp)->_cnt = 0;
- (void) fgetc(fp);
- (*fp)->_ptr = ((*fp)->_base) + k;
- (*fp)->_cnt = 512 - k;
- }
- }
- return(val);
-
- case 1: pos = vms_ftell(fp);
- if (pos == EOF)
- return (EOF);
- n += pos;
- dir = 0;
- break;
-
- case 2: val = fstat(fileno(fp), &buffer);
- if (val == EOF)
- return (EOF);
- n += buffer.st_size - 1;
-
- dir = 0;
- break;
-
- default : return (EOF);
- }
- }
-
- /* NOTREACHED */
-
-} /* vmsseek */
-
-
-
-long vms_ftell(fp)
-FILE *fp;
-{
- char c;
- long pos;
- long val;
-
- if ((*fp)->_cnt == 0) {
- c = fgetc(fp);
- val = vms_ungetc(c, fp);
- if (val != c)
- return (EOF);
- }
- pos = ftell(fp);
- if (pos >= 0)
- pos += ((*fp)->_ptr) - ((*fp)->_base);
-
- return (pos);
-
-} /* vms_ftell */
-
-
-
-long vms_ungetc(c,fp)
-char c;
-FILE *fp;
-{
-
- if ((c == EOF) && feof(fp))
- return (EOF);
-
- if ((*fp)->_cnt >= 512)
- return (EOF);
-
- (*fp)->_cnt++;
- (*fp)->_ptr--;
- *((*fp)->_ptr) = c;
-
- return (c);
-
-} /*vms_ungetc */
-#endif
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/test/ptex1.dvi b/Build/source/texk/dvi2tty/dvi2tty-src/test/ptex1.dvi
new file mode 100644
index 00000000000..e2f189ff406
--- /dev/null
+++ b/Build/source/texk/dvi2tty/dvi2tty-src/test/ptex1.dvi
Binary files differ
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/test/ptex1.tex b/Build/source/texk/dvi2tty/dvi2tty-src/test/ptex1.tex
new file mode 100644
index 00000000000..7e8ed057be6
--- /dev/null
+++ b/Build/source/texk/dvi2tty/dvi2tty-src/test/ptex1.tex
@@ -0,0 +1,15 @@
+% Copyright (C) 2022 Japanese TeX Development Community
+% You may freely use, modify and/or distribute this file.
+
+\documentclass{jarticle}
+\usepackage[T1]{fontenc}
+\usepackage{minijs}
+
+\begin{document}
+\parindent0mm
+\pagestyle{empty}
+あいうえお、花鳥風月。Einen schönen Tag.\\
+{\bfseries あいうえお、花鳥風月。Einen schönen Tag.}\\
+§¨°±´¶×÷ ΑΒΓαβγ АБВабв
+
+\end{document}
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/test/ptex2.dvi b/Build/source/texk/dvi2tty/dvi2tty-src/test/ptex2.dvi
new file mode 100644
index 00000000000..bb410c0f254
--- /dev/null
+++ b/Build/source/texk/dvi2tty/dvi2tty-src/test/ptex2.dvi
Binary files differ
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/test/ptex2.tex b/Build/source/texk/dvi2tty/dvi2tty-src/test/ptex2.tex
new file mode 100644
index 00000000000..e1630f813cc
--- /dev/null
+++ b/Build/source/texk/dvi2tty/dvi2tty-src/test/ptex2.tex
@@ -0,0 +1,15 @@
+% Copyright (C) 2022 Japanese TeX Development Community
+% You may freely use, modify and/or distribute this file.
+
+\documentclass[landscape]{tarticle}
+\usepackage[T1]{fontenc}
+\usepackage{minijs}
+
+\begin{document}
+\parindent0mm
+\pagestyle{empty}
+あいうえお、花鳥風月。Einen schönen Tag.\\
+{\bfseries あいうえお、花鳥風月。Einen schönen Tag.}\\
+§¨°±´¶×÷ ΑΒΓαβγ АБВабв
+
+\end{document}
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/test/uptex1.dvi b/Build/source/texk/dvi2tty/dvi2tty-src/test/uptex1.dvi
new file mode 100644
index 00000000000..627945e4bbf
--- /dev/null
+++ b/Build/source/texk/dvi2tty/dvi2tty-src/test/uptex1.dvi
Binary files differ
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/test/uptex1.tex b/Build/source/texk/dvi2tty/dvi2tty-src/test/uptex1.tex
new file mode 100644
index 00000000000..f592a9cca4d
--- /dev/null
+++ b/Build/source/texk/dvi2tty/dvi2tty-src/test/uptex1.tex
@@ -0,0 +1,35 @@
+% Copyright (C) 2022 Japanese TeX Development Community
+% You may freely use, modify and/or distribute this file.
+
+\documentclass{ujarticle}
+\usepackage[T1]{fontenc}
+
+\begin{document}
+\parindent0mm
+\pagestyle{empty}
+あいうえおアイウエオ、花鳥風月。☀☁☂☃,𠮟.Einen schönen Tag.\\
+{\bfseries あいうえおアイウエオ、花鳥風月。☀☁☂☃,𠮟.Einen schönen Tag.}\\
+§¨°±´¶×÷ ΑΒΓαβγ АБВабв
+
+\font\upjpnrmm = upjpnrm-h at 10.0pt
+\font\upjpngtm = upjpngt-h at 10.0pt
+\font\upschrmm = upschrm-h at 10.0pt
+\font\upschgtm = upschgt-h at 10.0pt
+\font\uptchrmm = uptchrm-h at 10.0pt
+\font\uptchgtm = uptchgt-h at 10.0pt
+\font\upkorrmm = upkorrm-h at 10.0pt
+\font\upkorgtm = upkorgt-h at 10.0pt
+
+\upjpnrmm おはよう,元気?頑張れ!有難う。\\
+\upjpngtm おはよう,元気?頑張れ!有難う。
+
+\upschrmm 早上好,你呢?加油!谢谢你。\\
+\upschgtm 早上好,你呢?加油!谢谢你。
+
+\uptchrmm 早上好,你呢?加油!謝謝你。\\
+\uptchgtm 早上好,你呢?加油!謝謝你。
+
+\upkorrmm 좋은 아침,안녕?파이팅!고마워.\\
+\upkorgtm 좋은 아침,안녕?파이팅!고마워.
+
+\end{document}
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/test/uptex2.dvi b/Build/source/texk/dvi2tty/dvi2tty-src/test/uptex2.dvi
new file mode 100644
index 00000000000..08bef318b3d
--- /dev/null
+++ b/Build/source/texk/dvi2tty/dvi2tty-src/test/uptex2.dvi
Binary files differ
diff --git a/Build/source/texk/dvi2tty/dvi2tty-src/test/uptex2.tex b/Build/source/texk/dvi2tty/dvi2tty-src/test/uptex2.tex
new file mode 100644
index 00000000000..caacab069b2
--- /dev/null
+++ b/Build/source/texk/dvi2tty/dvi2tty-src/test/uptex2.tex
@@ -0,0 +1,35 @@
+% Copyright (C) 2022 Japanese TeX Development Community
+% You may freely use, modify and/or distribute this file.
+
+\documentclass[landscape]{utarticle}
+\usepackage[T1]{fontenc}
+
+\begin{document}
+\parindent0mm
+\pagestyle{empty}
+あいうえお、花鳥風月。☀☁☂☃,𠮟.Einen schönen Tag.\\
+{\bfseries あいうえお、花鳥風月。☀☁☂☃,𠮟.Einen schönen Tag.}\\
+§¨°±´¶×÷ ΑΒΓαβγ АБВабв
+
+\font\upjpnrmm = upjpnrm-v at 10.0pt
+\font\upjpngtm = upjpngt-v at 10.0pt
+\font\upschrmm = upschrm-v at 10.0pt
+\font\upschgtm = upschgt-v at 10.0pt
+\font\uptchrmm = uptchrm-v at 10.0pt
+\font\uptchgtm = uptchgt-v at 10.0pt
+\font\upkorrmm = upkorrm-v at 10.0pt
+\font\upkorgtm = upkorgt-v at 10.0pt
+
+\upjpnrmm おはよう,元気?頑張れ!有難う。\\
+\upjpngtm おはよう,元気?頑張れ!有難う。
+
+\upschrmm 早上好,你呢?加油!谢谢你。\\
+\upschgtm 早上好,你呢?加油!谢谢你。
+
+\uptchrmm 早上好,你呢?加油!謝謝你。\\
+\uptchgtm 早上好,你呢?加油!謝謝你。
+
+\upkorrmm 좋은 아침,안녕?파이팅!고마워.\\
+\upkorgtm 좋은 아침,안녕?파이팅!고마워.
+
+\end{document}
diff --git a/Build/source/texk/dvi2tty/dvi2tty.test b/Build/source/texk/dvi2tty/dvi2tty.test
index e33f49e81d7..33f884f5b02 100755
--- a/Build/source/texk/dvi2tty/dvi2tty.test
+++ b/Build/source/texk/dvi2tty/dvi2tty.test
@@ -5,55 +5,49 @@
# You may freely use, modify and/or distribute this file.
test_src=$srcdir/$DVI2TTY_TREE/test
+test_out=$srcdir/output
-unset DVI2TTY # nullify dvi2tty options (if any)
+unset DVI2TTY # nullify dvi2tty options (if any)
+rm -f *.out
rc=0
-./dvi2tty $test_src/test.dvi >test.out && diff $srcdir/test.tty test.out || rc=1
+./dvi2tty $test_src/test.dvi >test.out && diff $test_out/test.tty test.out || rc=1
+./dvi2tty -c $test_src/test.dvi >testc.out && diff $test_out/testc.tty testc.out || rc=2
+./dvi2tty -s $test_src/test.dvi >tests.out && diff $test_out/tests.tty tests.out || rc=3
+./dvi2tty -u $test_src/test.dvi >testu.out && diff $test_out/testu.tty testu.out || rc=4
+./dvi2tty -Eu $test_src/test.dvi >testEu.out && diff $test_out/testEu.tty testEu.out || rc=6
-./dvi2tty -c $test_src/test.dvi >testc.out && diff $srcdir/testc.tty testc.out || rc=2
-./dvi2tty -s $test_src/test.dvi >tests.out && diff $srcdir/tests.tty tests.out || rc=3
+./dvi2tty $test_src/ligtest >ligtest.out && diff $test_out/ligtest.tty ligtest.out || rc=11
+./dvi2tty -u $test_src/ligtest >ligtestu.out && diff $test_out/ligtestu.tty ligtestu.out || rc=14
+./dvi2tty -Eu $test_src/ligtest >ligtestEu.out && diff $test_out/ligtestEu.tty ligtestEu.out || rc=16
-./dvi2tty -u $test_src/test.dvi >testu.out && diff $srcdir/testu.tty testu.out || rc=4
-./dvi2tty -Eu $test_src/test.dvi >testEu.out && diff $srcdir/testEu.tty testEu.out || rc=6
+./dvi2tty $test_src/table.dvi >table.out && diff $test_out/table.tty table.out || rc=21
+./dvi2tty -c $test_src/table.dvi >tablec.out && diff $test_out/tablec.tty tablec.out || rc=22
+./dvi2tty -s $test_src/table.dvi >tables.out && diff $test_out/tables.tty tables.out || rc=23
+./dvi2tty -u $test_src/table.dvi >tableu.out && diff $test_out/tableu.tty tableu.out || rc=24
+./dvi2tty -u -C $test_src/table.dvi >tableuC.out && diff $test_out/tableuC.tty tableuC.out || rc=25
+./dvi2tty -Eu $test_src/table.dvi >tableEu.out && diff $test_out/tableEu.tty tableEu.out || rc=26
+./dvi2tty -Eu1 $test_src/table.dvi >tableEu1.out && diff $test_out/tableEu1.tty tableEu1.out || rc=27
+./dvi2tty -Eu -C $test_src/table.dvi >tableEuC.out && diff $test_out/tableEuC.tty tableEuC.out || rc=28
+./dvi2tty -Eu -a $test_src/table.dvi >tableEua.out && diff $test_out/tableEua.tty tableEua.out || rc=29
-./dvi2tty $test_src/ligtest >ligtest.out && diff $srcdir/ligtest.tty ligtest.out || rc=1
+## CJK by pTeX / upTeX
+./dvi2tty -A -Eu -w100 -o ptex1Eu.out $test_src/ptex1.dvi && diff $test_out/ptex1Eu.tty ptex1Eu.out || rc=34
+./dvi2tty -J -Eu -w100 -o ptex1EuJ.out $test_src/ptex1.dvi && diff $test_out/ptex1Eu.tty ptex1EuJ.out || rc=35
-./dvi2tty -u $test_src/ligtest >ligtestu.out && diff $srcdir/ligtestu.tty ligtestu.out || rc=4
+./dvi2tty -U -Eu -w100 -o uptex1.out $test_src/uptex1.dvi && diff $test_out/uptex1.tty uptex1.out || rc=36
+./dvi2tty -J -Eu -w100 -o uptex1J.out $test_src/uptex1.dvi && diff $test_out/uptex1.tty uptex1J.out || rc=37
-./dvi2tty -Eu $test_src/ligtest >ligtestEu.out && diff $srcdir/ligtestEu.tty ligtestEu.out || rc=6
-
-
-./dvi2tty $test_src/table.dvi >table.out && diff $srcdir/table.tty table.out || rc=1
-
-./dvi2tty -c $test_src/table.dvi >tablec.out && diff $srcdir/tablec.tty tablec.out || rc=2
-
-./dvi2tty -s $test_src/table.dvi >tables.out && diff $srcdir/tables.tty tables.out || rc=3
-
-./dvi2tty -u $test_src/table.dvi >tableu.out && diff $srcdir/tableu.tty tableu.out || rc=4
-
-./dvi2tty -u -C $test_src/table.dvi >tableuC.out && diff $srcdir/tableuC.tty tableuC.out || rc=5
-
-./dvi2tty -Eu $test_src/table.dvi >tableEu.out && diff $srcdir/tableEu.tty tableEu.out || rc=6
-
-./dvi2tty -Eu1 $test_src/table.dvi >tableEu1.out && diff $srcdir/tableEu1.tty tableEu1.out || rc=7
-
-./dvi2tty -Eu -C $test_src/table.dvi >tableEuC.out && diff $srcdir/tableEuC.tty tableEuC.out || rc=8
-
-./dvi2tty -Eu -a $test_src/table.dvi >tableEua.out && diff $srcdir/tableEua.tty tableEua.out || rc=9
## different position of FNTDEF and NOP
-./dvi2tty $test_src/fntdef0.dvi >fntdef0.out && diff $srcdir/fntdef0.tty fntdef0.out || rc=1
-
-./dvi2tty $test_src/fntdef1.dvi >fntdef1.out && diff $srcdir/fntdef0.tty fntdef1.out || rc=2
-
-./dvi2tty $test_src/fntdef2.dvi >fntdef2.out && diff $srcdir/fntdef0.tty fntdef2.out || rc=3
-
-./dvi2tty $test_src/fntdef3.dvi >fntdef3.out && diff $srcdir/fntdef0.tty fntdef3.out || rc=4
+./dvi2tty $test_src/fntdef0.dvi >fntdef0.out && diff $test_out/fntdef0.tty fntdef0.out || rc=41
+./dvi2tty $test_src/fntdef1.dvi >fntdef1.out && diff $test_out/fntdef0.tty fntdef1.out || rc=42
+./dvi2tty $test_src/fntdef2.dvi >fntdef2.out && diff $test_out/fntdef0.tty fntdef2.out || rc=43
+./dvi2tty $test_src/fntdef3.dvi >fntdef3.out && diff $test_out/fntdef0.tty fntdef3.out || rc=44
exit $rc
diff --git a/Build/source/texk/dvi2tty/fntdef0.tty b/Build/source/texk/dvi2tty/output/fntdef0.tty
index f3ace132f71..f3ace132f71 100644
--- a/Build/source/texk/dvi2tty/fntdef0.tty
+++ b/Build/source/texk/dvi2tty/output/fntdef0.tty
diff --git a/Build/source/texk/dvi2tty/ligtest.dis b/Build/source/texk/dvi2tty/output/ligtest.dis
index 3af86996781..3af86996781 100644
--- a/Build/source/texk/dvi2tty/ligtest.dis
+++ b/Build/source/texk/dvi2tty/output/ligtest.dis
diff --git a/Build/source/texk/dvi2tty/ligtest.tty b/Build/source/texk/dvi2tty/output/ligtest.tty
index c37fb5a30e3..c37fb5a30e3 100644
--- a/Build/source/texk/dvi2tty/ligtest.tty
+++ b/Build/source/texk/dvi2tty/output/ligtest.tty
diff --git a/Build/source/texk/dvi2tty/ligtestEu.tty b/Build/source/texk/dvi2tty/output/ligtestEu.tty
index f4321661a6f..f4321661a6f 100644
--- a/Build/source/texk/dvi2tty/ligtestEu.tty
+++ b/Build/source/texk/dvi2tty/output/ligtestEu.tty
diff --git a/Build/source/texk/dvi2tty/ligtestu.tty b/Build/source/texk/dvi2tty/output/ligtestu.tty
index 24d632d71e9..24d632d71e9 100644
--- a/Build/source/texk/dvi2tty/ligtestu.tty
+++ b/Build/source/texk/dvi2tty/output/ligtestu.tty
diff --git a/Build/source/texk/dvi2tty/output/ptex1.dis b/Build/source/texk/dvi2tty/output/ptex1.dis
new file mode 100644
index 00000000000..4cf9c5688ff
--- /dev/null
+++ b/Build/source/texk/dvi2tty/output/ptex1.dis
@@ -0,0 +1,160 @@
+000000: PRE version : 2
+000002: numerator : 25400000
+000006: denominator : 473628672
+000010: magnification : 1000
+000014: job name ( 27) : TeX output 2022.04.02:1108
+000042: BOP page number : 1
+000047: 0 0 0
+000059: 0 0 0
+000071: 0 0 0
+000083: prev page offset : -00001
+000087: DOWN4: 44498944
+000092: PUSH
+000093: DOWN4: -42401792
+000098: DOWN4: 40435712
+000103: PUSH
+000104: RIGHT3: 4063232
+000108: DOWN4: -38797312
+000113: XXX1: 26 bytes
+000115: header=l3backend-dvips.pro
+000141: DOWN3: 509600
+000145: PUSH
+000146: FNT_DEF1: 43
+000148: checksum : 0
+000152: scale : 629800
+000156: design : 655360
+000160: name : jis
+000165: FONT_43 /* jis */
+000166: SET2: 9250
+000169: SET2: 9252
+000172: SET2: 9254
+000175: SET2: 9256
+000178: SET2: 9258
+000181: SET2: 8482
+000184: W3: 303001
+000188: SET2: 12886
+000191: SET2: 17467
+000194: SET2: 18807
+000197: SET2: 14190
+000200: SET2: 8483
+000203: W0
+000204: FNT_DEF1: 41
+000206: checksum : 204597937
+000210: scale : 655360
+000214: design : 655360
+000218: name : ecrm1000
+000228: FONT_41 /* ecrm1000 */
+000229: Char: Einen
+000234: W3: 218400
+000238: Char: sc
+000240: RIGHT2: -18200
+000243: Char: h
+000244: SET1: 246
+000246: Char: nen
+000249: W0
+000250: Char: T
+000251: RIGHT3: -54600
+000255: Char: ag.
+000258: POP
+000259: Y3: 983040
+000263: PUSH
+000264: FNT_DEF1: 45
+000266: checksum : 0
+000270: scale : 629800
+000274: design : 655360
+000278: name : jisg
+000284: FONT_45 /* jisg */
+000285: SET2: 9250
+000288: SET2: 9252
+000291: SET2: 9254
+000294: SET2: 9256
+000297: SET2: 9258
+000300: SET2: 8482
+000303: W3: 303001
+000307: SET2: 12886
+000310: SET2: 17467
+000313: SET2: 18807
+000316: SET2: 14190
+000319: SET2: 8483
+000322: W0
+000323: FNT_DEF1: 46
+000325: checksum : 39675532
+000329: scale : 655360
+000333: design : 655360
+000337: name : ecbx1000
+000347: FONT_46 /* ecbx1000 */
+000348: Char: Einen
+000353: W3: 251160
+000357: Char: sc
+000359: RIGHT2: -20930
+000362: Char: h
+000363: SET1: 246
+000365: Char: nen
+000368: W0
+000369: Char: T
+000370: RIGHT3: -62790
+000374: Char: ag.
+000377: POP
+000378: Y0
+000379: PUSH
+000380: FONT_43 /* jis */
+000381: SET2: 8568
+000384: SET2: 8495
+000387: SET2: 8555
+000390: SET2: 8542
+000393: SET2: 8493
+000396: SET2: 8825
+000399: SET2: 8543
+000402: SET2: 8544
+000405: W3: 218400
+000409: SET2: 9761
+000412: SET2: 9762
+000415: SET2: 9763
+000418: SET2: 9793
+000421: SET2: 9794
+000424: SET2: 9795
+000427: W0
+000428: SET2: 10017
+000431: SET2: 10018
+000434: SET2: 10019
+000437: SET2: 10065
+000440: SET2: 10066
+000443: SET2: 10067
+000446: POP
+000447: POP
+000448: POP
+000449: EOP
+000450: POST last page offset : 000042
+000455: numerator : 25400000
+000459: denominator : 473628672
+000463: magnification : 1000
+000467: max page height : 44498944
+000471: max page width : 25493504
+000475: stack size needed: 3
+000477: number of pages : 1
+000479: FNT_DEF1: 46
+000481: checksum : 39675532
+000485: scale : 655360
+000489: design : 655360
+000493: name : ecbx1000
+000503: FNT_DEF1: 45
+000505: checksum : 0
+000509: scale : 629800
+000513: design : 655360
+000517: name : jisg
+000523: FNT_DEF1: 43
+000525: checksum : 0
+000529: scale : 629800
+000533: design : 655360
+000537: name : jis
+000542: FNT_DEF1: 41
+000544: checksum : 204597937
+000548: scale : 655360
+000552: design : 655360
+000556: name : ecrm1000
+000566: POSTPOST postamble offset : 000450
+000571: version : 2
+000572: TRAILER
+000573: TRAILER
+000574: TRAILER
+000575: TRAILER
diff --git a/Build/source/texk/dvi2tty/output/ptex1Eu.tty b/Build/source/texk/dvi2tty/output/ptex1Eu.tty
new file mode 100644
index 00000000000..75a867ec399
--- /dev/null
+++ b/Build/source/texk/dvi2tty/output/ptex1Eu.tty
@@ -0,0 +1,9 @@
+
+
+
+
+あいうえお、 花鳥風月。 Einen schönen Tag.
+
+あいうえお、 花鳥風月。 Einen schönen Tag.
+
+§¨°±´¶×÷ ΑΒΓαβγ АБВабв
diff --git a/Build/source/texk/dvi2tty/output/ptex2Eu.dis b/Build/source/texk/dvi2tty/output/ptex2Eu.dis
new file mode 100644
index 00000000000..e7253511773
--- /dev/null
+++ b/Build/source/texk/dvi2tty/output/ptex2Eu.dis
@@ -0,0 +1,165 @@
+000000: PRE version : 2
+000002: numerator : 25400000
+000006: denominator : 473628672
+000010: magnification : 1000
+000014: job name ( 27) : TeX output 2022.04.02:1108
+000042: BOP page number : 1
+000047: 0 0 0
+000059: 0 0 0
+000071: 0 0 0
+000083: prev page offset : -00001
+000087: DOWN4: 27170966
+000092: PUSH
+000093: DOWN4: -27629718
+000098: DOWN4: 25019167
+000103: PUSH
+000104: RIGHT3: -65536
+000108: DOWN4: -23527424
+000113: DVI_DIR: 1
+000115: DOWN4: -46137344
+000120: XXX1: 26 bytes
+000122: header=l3backend-dvips.pro
+000148: DOWN3: 509600
+000152: PUSH
+000153: FNT_DEF1: 42
+000155: checksum : 3919565046
+000159: scale : 629800
+000163: design : 655360
+000167: name : tmin10
+000175: FONT_42 /* tmin10 */
+000176: SET2: "2422 (あ)
+000179: SET2: "2424 (い)
+000182: SET2: "2426 (う)
+000185: SET2: "2428 (え)
+000188: SET2: "242A (お)
+000191: SET2: "2122 (、)
+000194: W3: 303001
+000198: SET2: "3256 (花)
+000201: SET2: "443B (鳥)
+000204: SET2: "4977 (風)
+000207: SET2: "376E (月)
+000210: SET2: "2123 (。)
+000213: W0
+000214: DOWN3: 225680
+000218: FNT_DEF1: 41
+000220: checksum : 204597937
+000224: scale : 655360
+000228: design : 655360
+000232: name : ecrm1000
+000242: FONT_41 /* ecrm1000 */
+000243: Char: Einen
+000248: W3: 218400
+000252: Char: sc
+000254: RIGHT2: -18200
+000257: Char: h
+000258: SET1: "F6
+000260: Char: nen
+000263: W0
+000264: Char: T
+000265: RIGHT3: -54600
+000269: Char: ag.
+000272: POP
+000273: Y3: 1114112
+000277: PUSH
+000278: FNT_DEF1: 44
+000280: checksum : 3919565046
+000284: scale : 629800
+000288: design : 655360
+000292: name : tgoth10
+000301: FONT_44 /* tgoth10 */
+000302: SET2: "2422 (あ)
+000305: SET2: "2424 (い)
+000308: SET2: "2426 (う)
+000311: SET2: "2428 (え)
+000314: SET2: "242A (お)
+000317: SET2: "2122 (、)
+000320: W3: 303001
+000324: SET2: "3256 (花)
+000327: SET2: "443B (鳥)
+000330: SET2: "4977 (風)
+000333: SET2: "376E (月)
+000336: SET2: "2123 (。)
+000339: W0
+000340: DOWN3: 225680
+000344: FNT_DEF1: 46
+000346: checksum : 39675532
+000350: scale : 655360
+000354: design : 655360
+000358: name : ecbx1000
+000368: FONT_46 /* ecbx1000 */
+000369: Char: Einen
+000374: W3: 251160
+000378: Char: sc
+000380: RIGHT2: -20930
+000383: Char: h
+000384: SET1: "F6
+000386: Char: nen
+000389: W0
+000390: Char: T
+000391: RIGHT3: -62790
+000395: Char: ag.
+000398: POP
+000399: Y0
+000400: PUSH
+000401: FONT_42 /* tmin10 */
+000402: SET2: "2178 (§)
+000405: SET2: "212F (¨)
+000408: SET2: "216B (°)
+000411: SET2: "215E (±)
+000414: SET2: "212D (´)
+000417: SET2: "2279 (¶)
+000420: SET2: "215F (×)
+000423: SET2: "2160 (÷)
+000426: W3: 218400
+000430: SET2: "2621 (Α)
+000433: SET2: "2622 (Β)
+000436: SET2: "2623 (Γ)
+000439: SET2: "2641 (α)
+000442: SET2: "2642 (β)
+000445: SET2: "2643 (γ)
+000448: W0
+000449: SET2: "2721 (А)
+000452: SET2: "2722 (Б)
+000455: SET2: "2723 (В)
+000458: SET2: "2751 (а)
+000461: SET2: "2752 (б)
+000464: SET2: "2753 (в)
+000467: POP
+000468: DOWN4: 43394889
+000473: POP
+000474: POP
+000475: EOP
+000476: POST last page offset : 000042
+000481: numerator : 25400000
+000485: denominator : 473628672
+000489: magnification : 1000
+000493: max page height : 27170966
+000497: max page width : 46071808
+000501: stack size needed: 4
+000503: number of pages : 1
+000505: FNT_DEF1: 46
+000507: checksum : 39675532
+000511: scale : 655360
+000515: design : 655360
+000519: name : ecbx1000
+000529: FNT_DEF1: 44
+000531: checksum : 3919565046
+000535: scale : 629800
+000539: design : 655360
+000543: name : tgoth10
+000552: FNT_DEF1: 42
+000554: checksum : 3919565046
+000558: scale : 629800
+000562: design : 655360
+000566: name : tmin10
+000574: FNT_DEF1: 41
+000576: checksum : 204597937
+000580: scale : 655360
+000584: design : 655360
+000588: name : ecrm1000
+000598: POSTPOST postamble offset : 000476
+000603: version : 3
+000604: TRAILER
+000605: TRAILER
+000606: TRAILER
+000607: TRAILER
diff --git a/Build/source/texk/dvi2tty/table.tty b/Build/source/texk/dvi2tty/output/table.tty
index 297ea338d1e..297ea338d1e 100644
--- a/Build/source/texk/dvi2tty/table.tty
+++ b/Build/source/texk/dvi2tty/output/table.tty
diff --git a/Build/source/texk/dvi2tty/tableEu.tty b/Build/source/texk/dvi2tty/output/tableEu.tty
index 978f7f751a8..978f7f751a8 100644
--- a/Build/source/texk/dvi2tty/tableEu.tty
+++ b/Build/source/texk/dvi2tty/output/tableEu.tty
diff --git a/Build/source/texk/dvi2tty/tableEu1.tty b/Build/source/texk/dvi2tty/output/tableEu1.tty
index eb88de5e6d8..eb88de5e6d8 100644
--- a/Build/source/texk/dvi2tty/tableEu1.tty
+++ b/Build/source/texk/dvi2tty/output/tableEu1.tty
diff --git a/Build/source/texk/dvi2tty/tableEuC.tty b/Build/source/texk/dvi2tty/output/tableEuC.tty
index e5ec742667f..e5ec742667f 100644
--- a/Build/source/texk/dvi2tty/tableEuC.tty
+++ b/Build/source/texk/dvi2tty/output/tableEuC.tty
diff --git a/Build/source/texk/dvi2tty/tableEua.tty b/Build/source/texk/dvi2tty/output/tableEua.tty
index 322aa48a8e4..322aa48a8e4 100644
--- a/Build/source/texk/dvi2tty/tableEua.tty
+++ b/Build/source/texk/dvi2tty/output/tableEua.tty
diff --git a/Build/source/texk/dvi2tty/tablec.tty b/Build/source/texk/dvi2tty/output/tablec.tty
index 051b52a6a7b..051b52a6a7b 100644
--- a/Build/source/texk/dvi2tty/tablec.tty
+++ b/Build/source/texk/dvi2tty/output/tablec.tty
Binary files differ
diff --git a/Build/source/texk/dvi2tty/tables.tty b/Build/source/texk/dvi2tty/output/tables.tty
index bc9a3e94373..bc9a3e94373 100644
--- a/Build/source/texk/dvi2tty/tables.tty
+++ b/Build/source/texk/dvi2tty/output/tables.tty
diff --git a/Build/source/texk/dvi2tty/tableu.tty b/Build/source/texk/dvi2tty/output/tableu.tty
index 076e0d209e7..076e0d209e7 100644
--- a/Build/source/texk/dvi2tty/tableu.tty
+++ b/Build/source/texk/dvi2tty/output/tableu.tty
diff --git a/Build/source/texk/dvi2tty/tableuC.tty b/Build/source/texk/dvi2tty/output/tableuC.tty
index 311ccc02c31..311ccc02c31 100644
--- a/Build/source/texk/dvi2tty/tableuC.tty
+++ b/Build/source/texk/dvi2tty/output/tableuC.tty
diff --git a/Build/source/texk/dvi2tty/test.tty b/Build/source/texk/dvi2tty/output/test.tty
index 1d8ee1f30cc..1d8ee1f30cc 100644
--- a/Build/source/texk/dvi2tty/test.tty
+++ b/Build/source/texk/dvi2tty/output/test.tty
diff --git a/Build/source/texk/dvi2tty/testEu.tty b/Build/source/texk/dvi2tty/output/testEu.tty
index bb9e3776867..bb9e3776867 100644
--- a/Build/source/texk/dvi2tty/testEu.tty
+++ b/Build/source/texk/dvi2tty/output/testEu.tty
diff --git a/Build/source/texk/dvi2tty/testc.tty b/Build/source/texk/dvi2tty/output/testc.tty
index 14ecafb9e62..14ecafb9e62 100644
--- a/Build/source/texk/dvi2tty/testc.tty
+++ b/Build/source/texk/dvi2tty/output/testc.tty
diff --git a/Build/source/texk/dvi2tty/tests.tty b/Build/source/texk/dvi2tty/output/tests.tty
index 57cc595deea..57cc595deea 100644
--- a/Build/source/texk/dvi2tty/tests.tty
+++ b/Build/source/texk/dvi2tty/output/tests.tty
diff --git a/Build/source/texk/dvi2tty/testu.tty b/Build/source/texk/dvi2tty/output/testu.tty
index 1d219270a64..1d219270a64 100644
--- a/Build/source/texk/dvi2tty/testu.tty
+++ b/Build/source/texk/dvi2tty/output/testu.tty
diff --git a/Build/source/texk/dvi2tty/output/uptex1.dis b/Build/source/texk/dvi2tty/output/uptex1.dis
new file mode 100644
index 00000000000..471904896ce
--- /dev/null
+++ b/Build/source/texk/dvi2tty/output/uptex1.dis
@@ -0,0 +1,438 @@
+000000: PRE version : 2
+000002: numerator : 25400000
+000006: denominator : 473628672
+000010: magnification : 1000
+000014: job name ( 27) : TeX output 2022.04.02:1108
+000042: BOP page number : 1
+000047: 0 0 0
+000059: 0 0 0
+000071: 0 0 0
+000083: prev page offset : -00001
+000087: DOWN4: 44564480
+000092: PUSH
+000093: DOWN4: -42467328
+000098: DOWN4: 40501248
+000103: PUSH
+000104: RIGHT3: 4063232
+000108: DOWN4: -38862848
+000113: XXX1: 26 bytes
+000115: header=l3backend-dvips.pro
+000141: DOWN3: 554928
+000145: PUSH
+000146: FNT_DEF1: 27
+000148: checksum : 0
+000152: scale : 630600
+000156: design : 655360
+000160: name : upjisr-h
+000170: FONT_27 /* upjisr-h */
+000171: SET2: 12354
+000174: SET2: 12356
+000177: SET2: 12358
+000180: SET2: 12360
+000183: SET2: 12362
+000186: SET2: 65393
+000189: SET2: 65394
+000192: SET2: 65395
+000195: SET2: 65396
+000198: SET2: 65397
+000201: SET2: 12289
+000204: W3: 315300
+000208: SET2: 33457
+000211: SET2: 40165
+000214: SET2: 39080
+000217: SET2: 26376
+000220: SET2: 12290
+000223: W0
+000224: SET2: 9728
+000227: SET2: 9729
+000230: SET2: 9730
+000233: SET2: 9731
+000236: SET2: 65292
+000239: W0
+000240: SET3: 134047
+000244: SET2: 65294
+000247: W0
+000248: FNT_DEF1: 42
+000250: checksum : 204597937
+000254: scale : 655360
+000258: design : 655360
+000262: name : ecrm1000
+000272: FONT_42 /* ecrm1000 */
+000273: Char: Einen
+000278: W3: 218400
+000282: Char: sc
+000284: RIGHT2: -18200
+000287: Char: h
+000288: SET1: 246
+000290: Char: nen
+000293: W0
+000294: Char: T
+000295: RIGHT3: -54600
+000299: Char: ag.
+000302: POP
+000303: Y3: 983040
+000307: PUSH
+000308: FNT_DEF1: 33
+000310: checksum : 0
+000314: scale : 630600
+000318: design : 655360
+000322: name : upjisg-h
+000332: FONT_33 /* upjisg-h */
+000333: SET2: 12354
+000336: SET2: 12356
+000339: SET2: 12358
+000342: SET2: 12360
+000345: SET2: 12362
+000348: SET2: 65393
+000351: SET2: 65394
+000354: SET2: 65395
+000357: SET2: 65396
+000360: SET2: 65397
+000363: SET2: 12289
+000366: W3: 315300
+000370: SET2: 33457
+000373: SET2: 40165
+000376: SET2: 39080
+000379: SET2: 26376
+000382: SET2: 12290
+000385: W0
+000386: SET2: 9728
+000389: SET2: 9729
+000392: SET2: 9730
+000395: SET2: 9731
+000398: SET2: 65292
+000401: W0
+000402: SET3: 134047
+000406: SET2: 65294
+000409: W0
+000410: FNT_DEF1: 43
+000412: checksum : 39675532
+000416: scale : 655360
+000420: design : 655360
+000424: name : ecbx1000
+000434: FONT_43 /* ecbx1000 */
+000435: Char: Einen
+000440: W3: 251160
+000444: Char: sc
+000446: RIGHT2: -20930
+000449: Char: h
+000450: SET1: 246
+000452: Char: nen
+000455: W0
+000456: Char: T
+000457: RIGHT3: -62790
+000461: Char: ag.
+000464: POP
+000465: Y0
+000466: PUSH
+000467: FONT_27 /* upjisr-h */
+000468: SET2: 167
+000471: SET2: 168
+000474: SET2: 176
+000477: SET2: 177
+000480: SET2: 180
+000483: SET2: 182
+000486: SET2: 215
+000489: SET2: 247
+000492: W3: 218400
+000496: SET2: 913
+000499: SET2: 914
+000502: SET2: 915
+000505: SET2: 945
+000508: SET2: 946
+000511: SET2: 947
+000514: W0
+000515: SET2: 1040
+000518: SET2: 1041
+000521: SET2: 1042
+000524: SET2: 1072
+000527: SET2: 1073
+000530: SET2: 1074
+000533: POP
+000534: Y0
+000535: PUSH
+000536: FNT_DEF1: 44
+000538: checksum : 0
+000542: scale : 655360
+000546: design : 655360
+000550: name : upjpnrm-h
+000561: FONT_44 /* upjpnrm-h */
+000562: SET2: 12362
+000565: SET2: 12399
+000568: SET2: 12424
+000571: SET2: 12358
+000574: SET2: 65292
+000577: RIGHT3: 327680
+000581: SET2: 20803
+000584: SET2: 27671
+000587: SET2: 65311
+000590: SET2: 38929
+000593: SET2: 24373
+000596: SET2: 12428
+000599: SET2: 65281
+000602: SET2: 26377
+000605: SET2: 38627
+000608: SET2: 12358
+000611: SET2: 12290
+000614: POP
+000615: Y0
+000616: PUSH
+000617: FNT_DEF1: 45
+000619: checksum : 0
+000623: scale : 655360
+000627: design : 655360
+000631: name : upjpngt-h
+000642: FONT_45 /* upjpngt-h */
+000643: SET2: 12362
+000646: SET2: 12399
+000649: SET2: 12424
+000652: SET2: 12358
+000655: SET2: 65292
+000658: RIGHT3: 327680
+000662: SET2: 20803
+000665: SET2: 27671
+000668: SET2: 65311
+000671: SET2: 38929
+000674: SET2: 24373
+000677: SET2: 12428
+000680: SET2: 65281
+000683: SET2: 26377
+000686: SET2: 38627
+000689: SET2: 12358
+000692: SET2: 12290
+000695: POP
+000696: Y0
+000697: PUSH
+000698: FNT_DEF1: 46
+000700: checksum : 0
+000704: scale : 655360
+000708: design : 655360
+000712: name : upschrm-h
+000723: FONT_46 /* upschrm-h */
+000724: SET2: 26089
+000727: SET2: 19978
+000730: SET2: 22909
+000733: SET2: 65292
+000736: W3: 327680
+000740: SET2: 20320
+000743: SET2: 21602
+000746: SET2: 65311
+000749: W0
+000750: SET2: 21152
+000753: SET2: 27833
+000756: SET2: 65281
+000759: W0
+000760: SET2: 35874
+000763: SET2: 35874
+000766: SET2: 20320
+000769: SET2: 12290
+000772: POP
+000773: Y0
+000774: PUSH
+000775: FNT_DEF1: 47
+000777: checksum : 0
+000781: scale : 655360
+000785: design : 655360
+000789: name : upschgt-h
+000800: FONT_47 /* upschgt-h */
+000801: SET2: 26089
+000804: SET2: 19978
+000807: SET2: 22909
+000810: SET2: 65292
+000813: W3: 327680
+000817: SET2: 20320
+000820: SET2: 21602
+000823: SET2: 65311
+000826: W0
+000827: SET2: 21152
+000830: SET2: 27833
+000833: SET2: 65281
+000836: W0
+000837: SET2: 35874
+000840: SET2: 35874
+000843: SET2: 20320
+000846: SET2: 12290
+000849: POP
+000850: Y0
+000851: PUSH
+000852: FNT_DEF1: 48
+000854: checksum : 0
+000858: scale : 655360
+000862: design : 655360
+000866: name : uptchrm-h
+000877: FONT_48 /* uptchrm-h */
+000878: SET2: 26089
+000881: SET2: 19978
+000884: SET2: 22909
+000887: W3: 163840
+000891: SET2: 65292
+000894: W0
+000895: SET2: 20320
+000898: SET2: 21602
+000901: SET2: 65311
+000904: SET2: 21152
+000907: SET2: 27833
+000910: SET2: 65281
+000913: SET2: 35613
+000916: SET2: 35613
+000919: SET2: 20320
+000922: W0
+000923: SET2: 12290
+000926: POP
+000927: Y0
+000928: PUSH
+000929: FNT_DEF1: 49
+000931: checksum : 0
+000935: scale : 655360
+000939: design : 655360
+000943: name : uptchgt-h
+000954: FONT_49 /* uptchgt-h */
+000955: SET2: 26089
+000958: SET2: 19978
+000961: SET2: 22909
+000964: W3: 163840
+000968: SET2: 65292
+000971: W0
+000972: SET2: 20320
+000975: SET2: 21602
+000978: SET2: 65311
+000981: SET2: 21152
+000984: SET2: 27833
+000987: SET2: 65281
+000990: SET2: 35613
+000993: SET2: 35613
+000996: SET2: 20320
+000999: W0
+001000: SET2: 12290
+001003: POP
+001004: Y0
+001005: PUSH
+001006: FNT_DEF1: 50
+001008: checksum : 0
+001012: scale : 655360
+001016: design : 655360
+001020: name : upkorrm-h
+001031: FONT_50 /* upkorrm-h */
+001032: SET2: 51339
+001035: SET2: 51008
+001038: RIGHT3: 218400
+001042: SET2: 50500
+001045: SET2: 52840
+001048: SET2: 65292
+001051: RIGHT3: 327680
+001055: SET2: 50504
+001058: SET2: 45397
+001061: SET2: 65311
+001064: SET2: 54028
+001067: SET2: 51060
+001070: SET2: 54021
+001073: SET2: 65281
+001076: SET2: 44256
+001079: SET2: 47560
+001082: SET2: 50892
+001085: SET2: 65294
+001088: POP
+001089: Y0
+001090: PUSH
+001091: FNT_DEF1: 51
+001093: checksum : 0
+001097: scale : 655360
+001101: design : 655360
+001105: name : upkorgt-h
+001116: FONT_51 /* upkorgt-h */
+001117: SET2: 51339
+001120: SET2: 51008
+001123: RIGHT3: 218400
+001127: SET2: 50500
+001130: SET2: 52840
+001133: SET2: 65292
+001136: RIGHT3: 327680
+001140: SET2: 50504
+001143: SET2: 45397
+001146: SET2: 65311
+001149: SET2: 54028
+001152: SET2: 51060
+001155: SET2: 54021
+001158: SET2: 65281
+001161: SET2: 44256
+001164: SET2: 47560
+001167: SET2: 50892
+001170: SET2: 65294
+001173: POP
+001174: POP
+001175: POP
+001176: EOP
+001177: POST last page offset : 000042
+001182: numerator : 25400000
+001186: denominator : 473628672
+001190: magnification : 1000
+001194: max page height : 44564480
+001198: max page width : 25493504
+001202: stack size needed: 3
+001204: number of pages : 1
+001206: FNT_DEF1: 51
+001208: checksum : 0
+001212: scale : 655360
+001216: design : 655360
+001220: name : upkorgt-h
+001231: FNT_DEF1: 50
+001233: checksum : 0
+001237: scale : 655360
+001241: design : 655360
+001245: name : upkorrm-h
+001256: FNT_DEF1: 49
+001258: checksum : 0
+001262: scale : 655360
+001266: design : 655360
+001270: name : uptchgt-h
+001281: FNT_DEF1: 48
+001283: checksum : 0
+001287: scale : 655360
+001291: design : 655360
+001295: name : uptchrm-h
+001306: FNT_DEF1: 47
+001308: checksum : 0
+001312: scale : 655360
+001316: design : 655360
+001320: name : upschgt-h
+001331: FNT_DEF1: 46
+001333: checksum : 0
+001337: scale : 655360
+001341: design : 655360
+001345: name : upschrm-h
+001356: FNT_DEF1: 45
+001358: checksum : 0
+001362: scale : 655360
+001366: design : 655360
+001370: name : upjpngt-h
+001381: FNT_DEF1: 44
+001383: checksum : 0
+001387: scale : 655360
+001391: design : 655360
+001395: name : upjpnrm-h
+001406: FNT_DEF1: 43
+001408: checksum : 39675532
+001412: scale : 655360
+001416: design : 655360
+001420: name : ecbx1000
+001430: FNT_DEF1: 42
+001432: checksum : 204597937
+001436: scale : 655360
+001440: design : 655360
+001444: name : ecrm1000
+001454: FNT_DEF1: 33
+001456: checksum : 0
+001460: scale : 630600
+001464: design : 655360
+001468: name : upjisg-h
+001478: FNT_DEF1: 27
+001480: checksum : 0
+001484: scale : 630600
+001488: design : 655360
+001492: name : upjisr-h
+001502: POSTPOST postamble offset : 001177
+001507: version : 2
+001508: TRAILER
+001509: TRAILER
+001510: TRAILER
+001511: TRAILER
diff --git a/Build/source/texk/dvi2tty/output/uptex1.tty b/Build/source/texk/dvi2tty/output/uptex1.tty
new file mode 100644
index 00000000000..c40518c758a
--- /dev/null
+++ b/Build/source/texk/dvi2tty/output/uptex1.tty
@@ -0,0 +1,25 @@
+
+
+
+
+あいうえおアイウエオ、 花鳥風月。 ☀☁☂☃, 𠮟. Einen schönen Tag.
+
+あいうえおアイウエオ、 花鳥風月。 ☀☁☂☃, 𠮟. Einen schönen Tag.
+
+§¨°±´¶×÷ ΑΒΓαβγ АБВабв
+
+おはよう, 元気?頑張れ!有難う。
+
+おはよう, 元気?頑張れ!有難う。
+
+早上好, 你呢? 加油! 谢谢你。
+
+早上好, 你呢? 加油! 谢谢你。
+
+早上好 , 你呢?加油!謝謝你 。
+
+早上好 , 你呢?加油!謝謝你 。
+
+좋은 아침, 안녕?파이팅!고마워.
+
+좋은 아침, 안녕?파이팅!고마워.
diff --git a/Build/source/texk/dvi2tty/output/uptex2Eu.dis b/Build/source/texk/dvi2tty/output/uptex2Eu.dis
new file mode 100644
index 00000000000..19feadf7a4b
--- /dev/null
+++ b/Build/source/texk/dvi2tty/output/uptex2Eu.dis
@@ -0,0 +1,431 @@
+000000: PRE version : 2
+000002: numerator : 25400000
+000006: denominator : 473628672
+000010: magnification : 1000
+000014: job name ( 27) : TeX output 2022.04.02:1108
+000042: BOP page number : 1
+000047: 0 0 0
+000059: 0 0 0
+000071: 0 0 0
+000083: prev page offset : -00001
+000087: DOWN4: 27170966
+000092: PUSH
+000093: DOWN4: -27629718
+000098: DOWN4: 25019167
+000103: PUSH
+000104: RIGHT3: -131072
+000108: DOWN4: -23527424
+000113: DVI_DIR: 1
+000115: DOWN4: -46202880
+000120: XXX1: 26 bytes
+000122: header=l3backend-dvips.pro
+000148: DOWN3: 554928
+000152: PUSH
+000153: FNT_DEF1: 26
+000155: checksum : 0
+000159: scale : 630600
+000163: design : 655360
+000167: name : upjisr-v
+000177: FONT_26 /* upjisr-v */
+000178: SET2: "3042 (あ)
+000181: SET2: "3044 (い)
+000184: SET2: "3046 (う)
+000187: SET2: "3048 (え)
+000190: SET2: "304A (お)
+000193: SET2: "3001 (、)
+000196: W3: 315300
+000200: SET2: "82B1 (花)
+000203: SET2: "9CE5 (鳥)
+000206: SET2: "98A8 (風)
+000209: SET2: "6708 (月)
+000212: SET2: "3002 (。)
+000215: W0
+000216: SET2: "2600 (☀)
+000219: SET2: "2601 (☁)
+000222: SET2: "2602 (☂)
+000225: SET2: "2603 (☃)
+000228: SET2: "FF0C (,)
+000231: W0
+000232: SET3: "20B9F (𠮟)
+000236: SET2: "FF0E (.)
+000239: W0
+000240: DOWN3: 225680
+000244: FNT_DEF1: 42
+000246: checksum : 204597937
+000250: scale : 655360
+000254: design : 655360
+000258: name : ecrm1000
+000268: FONT_42 /* ecrm1000 */
+000269: Char: Einen
+000274: W3: 218400
+000278: Char: sc
+000280: RIGHT2: -18200
+000283: Char: h
+000284: SET1: "F6
+000286: Char: nen
+000289: W0
+000290: Char: T
+000291: RIGHT3: -54600
+000295: Char: ag.
+000298: POP
+000299: Y3: 1114112
+000303: PUSH
+000304: FNT_DEF1: 40
+000306: checksum : 0
+000310: scale : 630600
+000314: design : 655360
+000318: name : upjisg-v
+000328: FONT_40 /* upjisg-v */
+000329: SET2: "3042 (あ)
+000332: SET2: "3044 (い)
+000335: SET2: "3046 (う)
+000338: SET2: "3048 (え)
+000341: SET2: "304A (お)
+000344: SET2: "3001 (、)
+000347: W3: 315300
+000351: SET2: "82B1 (花)
+000354: SET2: "9CE5 (鳥)
+000357: SET2: "98A8 (風)
+000360: SET2: "6708 (月)
+000363: SET2: "3002 (。)
+000366: W0
+000367: SET2: "2600 (☀)
+000370: SET2: "2601 (☁)
+000373: SET2: "2602 (☂)
+000376: SET2: "2603 (☃)
+000379: SET2: "FF0C (,)
+000382: W0
+000383: SET3: "20B9F (𠮟)
+000387: SET2: "FF0E (.)
+000390: W0
+000391: DOWN3: 225680
+000395: FNT_DEF1: 43
+000397: checksum : 39675532
+000401: scale : 655360
+000405: design : 655360
+000409: name : ecbx1000
+000419: FONT_43 /* ecbx1000 */
+000420: Char: Einen
+000425: W3: 251160
+000429: Char: sc
+000431: RIGHT2: -20930
+000434: Char: h
+000435: SET1: "F6
+000437: Char: nen
+000440: W0
+000441: Char: T
+000442: RIGHT3: -62790
+000446: Char: ag.
+000449: POP
+000450: Y0
+000451: PUSH
+000452: FONT_26 /* upjisr-v */
+000453: SET2: "A7 (§)
+000456: SET2: "A8 (¨)
+000459: SET2: "B0 (°)
+000462: SET2: "B1 (±)
+000465: SET2: "B4 (´)
+000468: SET2: "B6 (¶)
+000471: SET2: "D7 (×)
+000474: SET2: "F7 (÷)
+000477: W3: 218400
+000481: SET2: "391 (Α)
+000484: SET2: "392 (Β)
+000487: SET2: "393 (Γ)
+000490: SET2: "3B1 (α)
+000493: SET2: "3B2 (β)
+000496: SET2: "3B3 (γ)
+000499: W0
+000500: SET2: "410 (А)
+000503: SET2: "411 (Б)
+000506: SET2: "412 (В)
+000509: SET2: "430 (а)
+000512: SET2: "431 (б)
+000515: SET2: "432 (в)
+000518: POP
+000519: Y0
+000520: PUSH
+000521: FNT_DEF1: 44
+000523: checksum : 0
+000527: scale : 655360
+000531: design : 655360
+000535: name : upjpnrm-v
+000546: FONT_44 /* upjpnrm-v */
+000547: SET2: "304A (お)
+000550: SET2: "306F (は)
+000553: SET2: "3088 (よ)
+000556: SET2: "3046 (う)
+000559: SET2: "FF0C (,)
+000562: RIGHT3: 327680
+000566: SET2: "5143 (元)
+000569: SET2: "6C17 (気)
+000572: SET2: "FF1F (?)
+000575: SET2: "9811 (頑)
+000578: SET2: "5F35 (張)
+000581: SET2: "308C (れ)
+000584: SET2: "FF01 (!)
+000587: SET2: "6709 (有)
+000590: SET2: "96E3 (難)
+000593: SET2: "3046 (う)
+000596: SET2: "3002 (。)
+000599: POP
+000600: Y0
+000601: PUSH
+000602: FNT_DEF1: 45
+000604: checksum : 0
+000608: scale : 655360
+000612: design : 655360
+000616: name : upjpngt-v
+000627: FONT_45 /* upjpngt-v */
+000628: SET2: "304A (お)
+000631: SET2: "306F (は)
+000634: SET2: "3088 (よ)
+000637: SET2: "3046 (う)
+000640: SET2: "FF0C (,)
+000643: RIGHT3: 327680
+000647: SET2: "5143 (元)
+000650: SET2: "6C17 (気)
+000653: SET2: "FF1F (?)
+000656: SET2: "9811 (頑)
+000659: SET2: "5F35 (張)
+000662: SET2: "308C (れ)
+000665: SET2: "FF01 (!)
+000668: SET2: "6709 (有)
+000671: SET2: "96E3 (難)
+000674: SET2: "3046 (う)
+000677: SET2: "3002 (。)
+000680: POP
+000681: Y0
+000682: PUSH
+000683: FNT_DEF1: 46
+000685: checksum : 0
+000689: scale : 655360
+000693: design : 655360
+000697: name : upschrm-v
+000708: FONT_46 /* upschrm-v */
+000709: SET2: "65E9 (早)
+000712: SET2: "4E0A (上)
+000715: SET2: "597D (好)
+000718: SET2: "FF0C (,)
+000721: RIGHT3: 327680
+000725: SET2: "4F60 (你)
+000728: SET2: "5462 (呢)
+000731: SET2: "FF1F (?)
+000734: SET2: "52A0 (加)
+000737: SET2: "6CB9 (油)
+000740: SET2: "FF01 (!)
+000743: SET2: "8C22 (谢)
+000746: SET2: "8C22 (谢)
+000749: SET2: "4F60 (你)
+000752: SET2: "3002 (。)
+000755: POP
+000756: Y0
+000757: PUSH
+000758: FNT_DEF1: 47
+000760: checksum : 0
+000764: scale : 655360
+000768: design : 655360
+000772: name : upschgt-v
+000783: FONT_47 /* upschgt-v */
+000784: SET2: "65E9 (早)
+000787: SET2: "4E0A (上)
+000790: SET2: "597D (好)
+000793: SET2: "FF0C (,)
+000796: RIGHT3: 327680
+000800: SET2: "4F60 (你)
+000803: SET2: "5462 (呢)
+000806: SET2: "FF1F (?)
+000809: SET2: "52A0 (加)
+000812: SET2: "6CB9 (油)
+000815: SET2: "FF01 (!)
+000818: SET2: "8C22 (谢)
+000821: SET2: "8C22 (谢)
+000824: SET2: "4F60 (你)
+000827: SET2: "3002 (。)
+000830: POP
+000831: Y0
+000832: PUSH
+000833: FNT_DEF1: 48
+000835: checksum : 0
+000839: scale : 655360
+000843: design : 655360
+000847: name : uptchrm-v
+000858: FONT_48 /* uptchrm-v */
+000859: SET2: "65E9 (早)
+000862: SET2: "4E0A (上)
+000865: SET2: "597D (好)
+000868: W3: 163840
+000872: SET2: "FF0C (,)
+000875: W0
+000876: SET2: "4F60 (你)
+000879: SET2: "5462 (呢)
+000882: SET2: "FF1F (?)
+000885: SET2: "52A0 (加)
+000888: SET2: "6CB9 (油)
+000891: SET2: "FF01 (!)
+000894: SET2: "8B1D (謝)
+000897: SET2: "8B1D (謝)
+000900: SET2: "4F60 (你)
+000903: W0
+000904: SET2: "3002 (。)
+000907: POP
+000908: Y0
+000909: PUSH
+000910: FNT_DEF1: 49
+000912: checksum : 0
+000916: scale : 655360
+000920: design : 655360
+000924: name : uptchgt-v
+000935: FONT_49 /* uptchgt-v */
+000936: SET2: "65E9 (早)
+000939: SET2: "4E0A (上)
+000942: SET2: "597D (好)
+000945: W3: 163840
+000949: SET2: "FF0C (,)
+000952: W0
+000953: SET2: "4F60 (你)
+000956: SET2: "5462 (呢)
+000959: SET2: "FF1F (?)
+000962: SET2: "52A0 (加)
+000965: SET2: "6CB9 (油)
+000968: SET2: "FF01 (!)
+000971: SET2: "8B1D (謝)
+000974: SET2: "8B1D (謝)
+000977: SET2: "4F60 (你)
+000980: W0
+000981: SET2: "3002 (。)
+000984: POP
+000985: Y0
+000986: PUSH
+000987: FNT_DEF1: 50
+000989: checksum : 0
+000993: scale : 655360
+000997: design : 655360
+001001: name : upkorrm-v
+001012: FONT_50 /* upkorrm-v */
+001013: SET2: "C88B (좋)
+001016: SET2: "C740 (은)
+001019: RIGHT3: 218400
+001023: SET2: "C544 (아)
+001026: SET2: "CE68 (침)
+001029: SET2: "FF0C (,)
+001032: RIGHT3: 327680
+001036: SET2: "C548 (안)
+001039: SET2: "B155 (녕)
+001042: SET2: "FF1F (?)
+001045: SET2: "D30C (파)
+001048: SET2: "C774 (이)
+001051: SET2: "D305 (팅)
+001054: SET2: "FF01 (!)
+001057: SET2: "ACE0 (고)
+001060: SET2: "B9C8 (마)
+001063: SET2: "C6CC (워)
+001066: SET2: "FF0E (.)
+001069: POP
+001070: Y0
+001071: PUSH
+001072: FNT_DEF1: 51
+001074: checksum : 0
+001078: scale : 655360
+001082: design : 655360
+001086: name : upkorgt-v
+001097: FONT_51 /* upkorgt-v */
+001098: SET2: "C88B (좋)
+001101: SET2: "C740 (은)
+001104: RIGHT3: 218400
+001108: SET2: "C544 (아)
+001111: SET2: "CE68 (침)
+001114: SET2: "FF0C (,)
+001117: RIGHT3: 327680
+001121: SET2: "C548 (안)
+001124: SET2: "B155 (녕)
+001127: SET2: "FF1F (?)
+001130: SET2: "D30C (파)
+001133: SET2: "C774 (이)
+001136: SET2: "D305 (팅)
+001139: SET2: "FF01 (!)
+001142: SET2: "ACE0 (고)
+001145: SET2: "B9C8 (마)
+001148: SET2: "C6CC (워)
+001151: SET2: "FF0E (.)
+001154: POP
+001155: DOWN4: 34503152
+001160: POP
+001161: POP
+001162: EOP
+001163: POST last page offset : 000042
+001168: numerator : 25400000
+001172: denominator : 473628672
+001176: magnification : 1000
+001180: max page height : 27170966
+001184: max page width : 46071808
+001188: stack size needed: 4
+001190: number of pages : 1
+001192: FNT_DEF1: 51
+001194: checksum : 0
+001198: scale : 655360
+001202: design : 655360
+001206: name : upkorgt-v
+001217: FNT_DEF1: 50
+001219: checksum : 0
+001223: scale : 655360
+001227: design : 655360
+001231: name : upkorrm-v
+001242: FNT_DEF1: 49
+001244: checksum : 0
+001248: scale : 655360
+001252: design : 655360
+001256: name : uptchgt-v
+001267: FNT_DEF1: 48
+001269: checksum : 0
+001273: scale : 655360
+001277: design : 655360
+001281: name : uptchrm-v
+001292: FNT_DEF1: 47
+001294: checksum : 0
+001298: scale : 655360
+001302: design : 655360
+001306: name : upschgt-v
+001317: FNT_DEF1: 46
+001319: checksum : 0
+001323: scale : 655360
+001327: design : 655360
+001331: name : upschrm-v
+001342: FNT_DEF1: 45
+001344: checksum : 0
+001348: scale : 655360
+001352: design : 655360
+001356: name : upjpngt-v
+001367: FNT_DEF1: 44
+001369: checksum : 0
+001373: scale : 655360
+001377: design : 655360
+001381: name : upjpnrm-v
+001392: FNT_DEF1: 43
+001394: checksum : 39675532
+001398: scale : 655360
+001402: design : 655360
+001406: name : ecbx1000
+001416: FNT_DEF1: 42
+001418: checksum : 204597937
+001422: scale : 655360
+001426: design : 655360
+001430: name : ecrm1000
+001440: FNT_DEF1: 40
+001442: checksum : 0
+001446: scale : 630600
+001450: design : 655360
+001454: name : upjisg-v
+001464: FNT_DEF1: 26
+001466: checksum : 0
+001470: scale : 630600
+001474: design : 655360
+001478: name : upjisr-v
+001488: POSTPOST postamble offset : 001163
+001493: version : 3
+001494: TRAILER
+001495: TRAILER
+001496: TRAILER
+001497: TRAILER
+001498: TRAILER
+001499: TRAILER
diff --git a/Build/source/texk/dvi2tty/version.ac b/Build/source/texk/dvi2tty/version.ac
index 174a4d42c87..64bc1426f23 100644
--- a/Build/source/texk/dvi2tty/version.ac
+++ b/Build/source/texk/dvi2tty/version.ac
@@ -8,4 +8,4 @@ dnl
dnl --------------------------------------------------------
dnl
dnl m4-include this file to define the current dvi2tty version
-m4_define([dvi2tty_version], [6.0.1])
+m4_define([dvi2tty_version], [6.0.2])