texlive[73271] Build/source/texk/web2c: {,e}uptex: Accept extended

commits+takuji at tug.org commits+takuji at tug.org
Thu Jan 2 13:27:30 CET 2025


Revision: 73271
          https://tug.org/svn/texlive?view=revision&revision=73271
Author:   takuji
Date:     2025-01-02 13:27:29 +0100 (Thu, 02 Jan 2025)
Log Message:
-----------
{,e}uptex: Accept extended upTeX internal encoding also in pTeX-compatible EUC/SJIS mode

Modified Paths:
--------------
    trunk/Build/source/texk/web2c/Makefile.in
    trunk/Build/source/texk/web2c/euptexdir/COPYRIGHT
    trunk/Build/source/texk/web2c/euptexdir/ChangeLog
    trunk/Build/source/texk/web2c/euptexdir/am/euptex.am
    trunk/Build/source/texk/web2c/euptexdir/upkcat.test
    trunk/Build/source/texk/web2c/ptexdir/COPYRIGHT
    trunk/Build/source/texk/web2c/ptexdir/ChangeLog
    trunk/Build/source/texk/web2c/ptexdir/am/ptex.am
    trunk/Build/source/texk/web2c/ptexdir/ptex-prntknj.test
    trunk/Build/source/texk/web2c/ptexdir/tests/pknj-e.log
    trunk/Build/source/texk/web2c/ptexdir/tests/pknj-s.log
    trunk/Build/source/texk/web2c/uptexdir/COPYRIGHT
    trunk/Build/source/texk/web2c/uptexdir/COPYRIGHT.ja
    trunk/Build/source/texk/web2c/uptexdir/ChangeLog
    trunk/Build/source/texk/web2c/uptexdir/am/uptex.am
    trunk/Build/source/texk/web2c/uptexdir/kanji.c
    trunk/Build/source/texk/web2c/uptexdir/tests/kcat.tex
    trunk/Build/source/texk/web2c/uptexdir/tests/upkcat.txt
    trunk/Build/source/texk/web2c/uptexdir/upkcat.test
    trunk/Build/source/texk/web2c/uptexdir/uptex-m.ch

Added Paths:
-----------
    trunk/Build/source/texk/web2c/euptexdir/euptex-widow.test
    trunk/Build/source/texk/web2c/euptexdir/tests/eup-jchwidow.log
    trunk/Build/source/texk/web2c/ptexdir/ptex-widow.test
    trunk/Build/source/texk/web2c/ptexdir/tests/p-jchwidow.log
    trunk/Build/source/texk/web2c/uptexdir/tests/jchwidow.tex
    trunk/Build/source/texk/web2c/uptexdir/tests/up-jchwidow.log
    trunk/Build/source/texk/web2c/uptexdir/tests/upkcat-e.txt
    trunk/Build/source/texk/web2c/uptexdir/tests/upkcat-s.txt
    trunk/Build/source/texk/web2c/uptexdir/uptex-widow.test

Modified: trunk/Build/source/texk/web2c/Makefile.in
===================================================================
--- trunk/Build/source/texk/web2c/Makefile.in	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/Makefile.in	2025-01-02 12:27:29 UTC (rev 73271)
@@ -3283,12 +3283,13 @@
 	ptexdir/tests/pknj-e.log ptexdir/tests/p-pknj-sa.typ \
 	ptexdir/tests/p-pknj-ea.typ ptexdir/tests/ucs.tex \
 	ptexdir/tests/ucs-s.log ptexdir/tests/ucs-e.log \
-	$(uptex_web_srcs) $(uptex_ch_srcs) uptexdir/uptex.defines \
-	uptexdir/upbibtex.ch uptexdir/updvitype.ch \
-	uptexdir/uppltotf.ch uptexdir/uptftopl.ch uptexdir/COPYRIGHT \
-	uptexdir/COPYRIGHT.ja uptexdir/ChangeLog $(uptex_tests) \
-	$(upweb_tests) tests/enc-u.bbl tests/enc-eu.bbl \
-	tests/enc-su.bbl tests/enc-uu.bbl uptexdir/tests/uptex3.tex \
+	ptexdir/tests/p-jchwidow.log $(uptex_web_srcs) \
+	$(uptex_ch_srcs) uptexdir/uptex.defines uptexdir/upbibtex.ch \
+	uptexdir/updvitype.ch uptexdir/uppltotf.ch \
+	uptexdir/uptftopl.ch uptexdir/COPYRIGHT uptexdir/COPYRIGHT.ja \
+	uptexdir/ChangeLog $(uptex_tests) $(upweb_tests) \
+	tests/enc-u.bbl tests/enc-eu.bbl tests/enc-su.bbl \
+	tests/enc-uu.bbl uptexdir/tests/uptex3.tex \
 	uptexdir/tests/uptex3.dvi uptexdir/tests/uptex4.tex \
 	uptexdir/tests/uptex4.dvi uptexdir/tests/uptex5.tex \
 	uptexdir/tests/uptex5.dvi uptexdir/tests/uptex3a.typ \
@@ -3307,6 +3308,7 @@
 	uptexdir/tests/lmr1.tex uptexdir/tests/up-lmr1.log \
 	uptexdir/tests/lmr2.tex uptexdir/tests/up-lmr2.log \
 	uptexdir/tests/noto1.tex uptexdir/tests/up-noto1.log \
+	uptexdir/tests/jchwidow.tex uptexdir/tests/up-jchwidow.log \
 	$(euptex_web_srcs) $(euptex_ch_srcs) euptexdir/euptex.defines \
 	euptexdir/COPYRIGHT euptexdir/COPYRIGHT.jis \
 	euptexdir/ChangeLog euptexdir/EUPTEX.txt $(euptex_tests) \
@@ -3336,22 +3338,23 @@
 	euptexdir/tests/eup-ofm.log euptexdir/tests/eup-prim.tex \
 	euptexdir/tests/eup-prim.log euptexdir/tests/ucs.tex \
 	euptexdir/tests/ucs-s.log euptexdir/tests/ucs-e.log \
-	euptexdir/tests/ucs-u.log hitexdir/ChangeLog $(hitex_web) \
-	$(hitex_tests) hitexdir/tests/hello.tex \
-	hitexdir/tests/rule.tex pdftexdir/regex/COPYING.LIB \
-	pdftexdir/regex/README $(pdftex_ch_srcs) \
-	pdftexdir/pdftex.defines pdftexdir/ChangeLog pdftexdir/NEWS \
-	pdftexdir/README pdftexdir/change-files.txt $(pdftex_tests) \
-	tests/wprob.tex pdftexdir/tests/pdfimage.tex tests/1-4.jpg \
-	tests/B.pdf tests/basic.tex tests/lily-ledger-broken.png \
-	tests/expanded.tex tests/expanded.txt tests/cnfline.tex \
-	tests/partoken-ok.tex tests/partoken-xfail.tex \
-	$(ttf2afm_tests) pdftexdir/tests/postV3.afm \
-	pdftexdir/tests/postV3.ttf pdftexdir/tests/postV7.afm \
-	pdftexdir/tests/postV7.ttf $(pdftosrc_tests) \
-	pdftexdir/tests/test-13.pdf pdftexdir/tests/test-13.xref \
-	pdftexdir/tests/test-15.pdf pdftexdir/tests/test-15.xref \
-	$(libluasocket_sources) luatexdir/luasocket/src/ftp_lua.c \
+	euptexdir/tests/ucs-u.log euptexdir/tests/eup-jchwidow.log \
+	hitexdir/ChangeLog $(hitex_web) $(hitex_tests) \
+	hitexdir/tests/hello.tex hitexdir/tests/rule.tex \
+	pdftexdir/regex/COPYING.LIB pdftexdir/regex/README \
+	$(pdftex_ch_srcs) pdftexdir/pdftex.defines pdftexdir/ChangeLog \
+	pdftexdir/NEWS pdftexdir/README pdftexdir/change-files.txt \
+	$(pdftex_tests) tests/wprob.tex pdftexdir/tests/pdfimage.tex \
+	tests/1-4.jpg tests/B.pdf tests/basic.tex \
+	tests/lily-ledger-broken.png tests/expanded.tex \
+	tests/expanded.txt tests/cnfline.tex tests/partoken-ok.tex \
+	tests/partoken-xfail.tex $(ttf2afm_tests) \
+	pdftexdir/tests/postV3.afm pdftexdir/tests/postV3.ttf \
+	pdftexdir/tests/postV7.afm pdftexdir/tests/postV7.ttf \
+	$(pdftosrc_tests) pdftexdir/tests/test-13.pdf \
+	pdftexdir/tests/test-13.xref pdftexdir/tests/test-15.pdf \
+	pdftexdir/tests/test-15.xref $(libluasocket_sources) \
+	luatexdir/luasocket/src/ftp_lua.c \
 	luatexdir/luasocket/src/headers_lua.c \
 	luatexdir/luasocket/src/http_lua.c \
 	luatexdir/luasocket/src/ltn12_lua.c \
@@ -3652,7 +3655,7 @@
 	ptests/xcmr10.pl ptests/xsample*.typ ptests/x*min10.* \
 	ptests/xchcode*.* ptests/xskipjfmp.* ptrip.diffs p-ctrlsym.log \
 	p-ctrlsym.out p-ctrlsym.tex p-endline*.* p-jctrlsym*.* \
-	p-chartoken.* p-lineend.* p-pknj-*.* p-ucs*.* \
+	p-chartoken.* p-lineend.* p-pknj-*.* p-ucs*.* p-jchwidow*.* \
 	$(nodist_uptex_SOURCES) uptex.web uptex.ch uptex-web2c uptex.p \
 	uptex.pool uptex-tangle $(upweb_programs:=.c) \
 	$(upweb_programs:=.h) $(upweb_programs:=.p) \
@@ -3665,13 +3668,14 @@
 	uptests/x*min10.* uptests/xchcode*.* uptests/xtestnewu*.* \
 	uptests/xuparse.* uptests/yuparse.* uptests/ygkhuge*.* \
 	uptests/ygk256*.* uptests/xskipjfmp.* uptrip.diffs up-ofm.* \
-	up-prim.* up-lmr*.* up-noto*.* $(nodist_euptex_SOURCES) \
-	euptex.web euptex.ch euptex-web2c euptex.p euptex.pool \
-	euptex-tangle euptrip.diffs pdfprimitive-euptex.* \
-	eup-ctrlsym.log eup-ctrlsym.out eup-ctrlsym.tex eup-endline*.* \
-	eup-jctrlsym*.* eup-pknj-*.* eup-postpena*.* eup-free_*.* \
-	eup-inhibitglue*.* eup-kinsoku*.* eup-ofm.* eup-prim.* \
-	eup-ucs*.* $(nodist_hitex_SOURCES) $(nodist_hishrink_SOURCES) \
+	up-prim.* up-lmr*.* up-noto*.* up-jchwidow.* \
+	$(nodist_euptex_SOURCES) euptex.web euptex.ch euptex-web2c \
+	euptex.p euptex.pool euptex-tangle euptrip.diffs \
+	pdfprimitive-euptex.* eup-ctrlsym.log eup-ctrlsym.out \
+	eup-ctrlsym.tex eup-endline*.* eup-jctrlsym*.* eup-pknj-*.* \
+	eup-postpena*.* eup-free_*.* eup-inhibitglue*.* eup-kinsoku*.* \
+	eup-ofm.* eup-prim.* eup-ucs*.* eup-jchwidow.* \
+	$(nodist_hitex_SOURCES) $(nodist_hishrink_SOURCES) \
 	$(nodist_histretch_SOURCES) hiformat-tangle hitex-tangle \
 	hello.log rule.log $(nodist_pdftex_SOURCES) pdftex-final.ch \
 	pdftex-web2c pdftex.p pdftex.pool pdftex-tangle pwprob.log \
@@ -4496,7 +4500,7 @@
 	ptexdir/wcfname.test \
 	ptexdir/ptex-ctrlsym.test \
 	ptexdir/ptex-prntknj.test \
-	ptexdir/ptex-ucs.test
+	ptexdir/ptex-ucs.test ptexdir/ptex-widow.test
 
 uptex_cppflags = $(PTEXENC_INCLUDES) $(AM_CPPFLAGS) $(ZLIB_INCLUDES)
 uptex_ldadd = libukanji.a $(pproglib) $(PTEXENC_LIBS) $(LDADD) $(ZLIB_LIBS)
@@ -4561,7 +4565,8 @@
 	uptexdir/upkcat.test \
 	uptexdir/wcfname.test uptexdir/wcfname0.test \
 	uptexdir/uptex-ofm.test uptexdir/uptex-prim.test \
-	uptexdir/uptex-lmr.test uptexdir/uptex-noto.test
+	uptexdir/uptex-lmr.test uptexdir/uptex-noto.test \
+	uptexdir/uptex-widow.test
 
 # uppPLtoTF/upTFtoPL
 upweb_tests = uptexdir/upbibtex.test uptexdir/updvitype.test \
@@ -4629,7 +4634,7 @@
 	euptexdir/euptex-prntknj.test \
 	euptexdir/euptex-kinsoku.test \
 	euptexdir/euptex-ofm.test euptexdir/euptex-prim.test \
-	euptexdir/euptex-ucs.test
+	euptexdir/euptex-ucs.test euptexdir/euptex-widow.test
 
 
 # At the moment, these are the only man pages handled in the
@@ -22066,7 +22071,7 @@
 ptexdir/ptriptest.log: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
 ptexdir/pver.log ptexdir/wcfname.log \
 	ptexdir/ptex-ctrlsym.log ptexdir/ptex-prntknj.log \
-	ptexdir/ptex-ucs.log: ptex$(EXEEXT)
+	ptexdir/ptex-ucs.log ptexdir/ptex-widow.log: ptex$(EXEEXT)
 
 ptrip.diffs: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
 	$(triptrap_diffs) $@
@@ -22140,7 +22145,8 @@
 uptexdir/upver.log uptexdir/upkcat.log \
 	uptexdir/wcfname.log uptexdir/wcfname0.log \
 	uptexdir/uptex-ofm.log uptexdir/uptex-prim.log \
-	uptexdir/uptex-lmr.log uptexdir/uptex-noto.log: uptex$(EXEEXT)
+	uptexdir/uptex-lmr.log uptexdir/uptex-noto.log \
+	uptexdir/uptex-widow.log: uptex$(EXEEXT)
 uptexdir/upbibtex.log: upbibtex$(EXEEXT)
 uptexdir/updvitype.log: updvitype$(EXEEXT)
 uptexdir/uppltotf.log: uppltotf$(EXEEXT)
@@ -22191,7 +22197,7 @@
 	euptexdir/euptex-ctrlsym.log euptexdir/euptex-prntknj.log \
 	euptexdir/euptex-kinsoku.log \
 	euptexdir/euptex-ofm.log euptexdir/euptex-prim.log \
-	euptexdir/euptex-ucs.log: euptex$(EXEEXT)
+	euptexdir/euptex-ucs.log euptexdir/euptex-widow.log: euptex$(EXEEXT)
 
 euptrip.diffs: euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
 	$(triptrap_diffs) $@

Modified: trunk/Build/source/texk/web2c/euptexdir/COPYRIGHT
===================================================================
--- trunk/Build/source/texk/web2c/euptexdir/COPYRIGHT	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/euptexdir/COPYRIGHT	2025-01-02 12:27:29 UTC (rev 73271)
@@ -1,6 +1,6 @@
 Copyright (C) 2009 ASCII MEDIA WORKS.
-Copyright (C) 2007-2024 Takuji Tanaka
-Copyright (C) 2010-2024 Japanese TeX Development Community
+Copyright (C) 2007-2025 Takuji Tanaka
+Copyright (C) 2010-2025 Japanese TeX Development Community
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without

Modified: trunk/Build/source/texk/web2c/euptexdir/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/euptexdir/ChangeLog	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/euptexdir/ChangeLog	2025-01-02 12:27:29 UTC (rev 73271)
@@ -1,3 +1,12 @@
+2025-01-02  TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
+
+	* upkcat.test: Update tests.
+	* euptex-widow.test, tests/eup-jchwidow.log,
+	am/euptex.am: Add new tests for widow penalty originally
+	written by Kitagawa-san.
+	https://github.com/texjporg/tex-jp-build/issues/103
+	* COPYRIGHT: copyright year.
+
 2024-10-20  TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
 
 	* eptex.ech, etex.ch{0,1}, fam256,ch,

Modified: trunk/Build/source/texk/web2c/euptexdir/am/euptex.am
===================================================================
--- trunk/Build/source/texk/web2c/euptexdir/am/euptex.am	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/euptexdir/am/euptex.am	2025-01-02 12:27:29 UTC (rev 73271)
@@ -105,7 +105,7 @@
 	euptexdir/euptex-prntknj.test \
 	euptexdir/euptex-kinsoku.test \
 	euptexdir/euptex-ofm.test euptexdir/euptex-prim.test \
-	euptexdir/euptex-ucs.test
+	euptexdir/euptex-ucs.test euptexdir/euptex-widow.test
 euptexdir/euptriptest.log euptexdir/eptriptest.log: \
 	euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
 euptexdir/pdfprimitive.log: euptex$(EXEEXT)
@@ -114,7 +114,7 @@
 	euptexdir/euptex-ctrlsym.log euptexdir/euptex-prntknj.log \
 	euptexdir/euptex-kinsoku.log \
 	euptexdir/euptex-ofm.log euptexdir/euptex-prim.log \
-	euptexdir/euptex-ucs.log: euptex$(EXEEXT)
+	euptexdir/euptex-ucs.log euptexdir/euptex-widow.log: euptex$(EXEEXT)
 
 EXTRA_DIST += $(euptex_tests)
 
@@ -140,7 +140,7 @@
 	euptexdir/tests/pdfprimitive-euptex.log
 DISTCLEANFILES += pdfprimitive-euptex.*
 
-## euptex-ctrlsym.test
+## euptexdir/euptex-ctrlsym.test
 EXTRA_DIST += euptexdir/tests/ctrlsym.tex euptexdir/tests/ctrlsym.log \
 	euptexdir/tests/endlinechar.tex euptexdir/tests/endline.log \
 	euptexdir/tests/control-symbol.tex euptexdir/tests/jctrlsym.log \
@@ -147,13 +147,13 @@
 	euptexdir/tests/eup-endlinea.typ euptexdir/tests/eup-jctrlsyma.typ
 DISTCLEANFILES += eup-ctrlsym.log eup-ctrlsym.out eup-ctrlsym.tex \
 	eup-endline*.* eup-jctrlsym*.*
-## euptex-prntknj.test
+## euptexdir/euptex-prntknj.test
 EXTRA_DIST += euptexdir/tests/printkanji.tex euptexdir/tests/pknj-s.log \
 	euptexdir/tests/pknj-e.log euptexdir/tests/pknj-u.log \
 	euptexdir/tests/eup-pknj-sa.typ euptexdir/tests/eup-pknj-ea.typ \
 	euptexdir/tests/eup-pknj-ua.typ
 DISTCLEANFILES += eup-pknj-*.*
-## euptex-kinsoku.test
+## euptexdir/euptex-kinsoku.test
 EXTRA_DIST += euptexdir/tests/postpena.tex euptexdir/tests/postpena.log \
 	euptexdir/tests/free_ixsp.tex euptexdir/tests/free_ixsp.log \
 	euptexdir/tests/free_pena.tex euptexdir/tests/free_pena.log \
@@ -161,16 +161,19 @@
 	euptexdir/tests/kinsoku-table.tex euptexdir/tests/kinsoku-table.log \
 	euptexdir/tests/kinsoku-search.tex euptexdir/tests/kinsoku-search.log
 DISTCLEANFILES += eup-postpena*.* eup-free_*.* eup-inhibitglue*.* eup-kinsoku*.*
-## euptex-ofm.test
+## euptexdir/euptex-ofm.test
 EXTRA_DIST += euptexdir/tests/eup-ofm.tex euptexdir/tests/eup-ofm.log
 DISTCLEANFILES += eup-ofm.*
-## euptex-prim.test
+## euptexdir/euptex-prim.test
 EXTRA_DIST += euptexdir/tests/eup-prim.tex euptexdir/tests/eup-prim.log
 DISTCLEANFILES += eup-prim.*
-## euptex-ucs.test
+## euptexdir/euptex-ucs.test
 EXTRA_DIST += euptexdir/tests/ucs.tex euptexdir/tests/ucs-s.log \
 	euptexdir/tests/ucs-e.log euptexdir/tests/ucs-u.log
 DISTCLEANFILES += eup-ucs*.*
+## euptexdir/euptex-widow.test
+EXTRA_DIST += euptexdir/tests/eup-jchwidow.log
+DISTCLEANFILES += eup-jchwidow.*
 
 euptrip.diffs: euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
 	$(triptrap_diffs) $@

Added: trunk/Build/source/texk/web2c/euptexdir/euptex-widow.test
===================================================================
--- trunk/Build/source/texk/web2c/euptexdir/euptex-widow.test	                        (rev 0)
+++ trunk/Build/source/texk/web2c/euptexdir/euptex-widow.test	2025-01-02 12:27:29 UTC (rev 73271)
@@ -0,0 +1,32 @@
+#! /bin/sh -vx
+# Copyright 2025 Japanese TeX Development Community <issue at texjp.org>
+# You may freely use, modify and/or distribute this file.
+
+BinDir=${BinDir:-.}
+ExeExt=${ExeExt:-}
+_euptex=$BinDir/euptex$ExeExt
+
+LC_ALL=C; export LC_ALL;  LANGUAGE=C; export LANGUAGE
+
+TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF
+TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS
+TEXFONTS=".;$srcdir//tests"; export TEXFONTS
+TEXFORMATS=.; export TEXFORMATS
+
+# get same filename in log
+rm -f eup-jchwidow.*
+$LN_S $srcdir/uptexdir/tests/jchwidow.tex ./eup-jchwidow.tex
+
+if test ! -f ./eup-basic.tex; then
+  cp $srcdir/tests/dump-basic.tex ./eup-basic.tex
+fi
+if test ! -f ./eup-basic.fmt; then
+  $_euptex -ini -etex eup-basic || exit 1
+fi
+
+$_euptex -fmt=eup-basic -interaction=batchmode eup-jchwidow || :
+
+sed 1d eup-jchwidow.log >eup-jchwidow.out
+
+diff $srcdir/euptexdir/tests/eup-jchwidow.log eup-jchwidow.out || exit 3
+


Property changes on: trunk/Build/source/texk/web2c/euptexdir/euptex-widow.test
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Build/source/texk/web2c/euptexdir/tests/eup-jchwidow.log
===================================================================
--- trunk/Build/source/texk/web2c/euptexdir/tests/eup-jchwidow.log	                        (rev 0)
+++ trunk/Build/source/texk/web2c/euptexdir/tests/eup-jchwidow.log	2025-01-02 12:27:29 UTC (rev 73271)
@@ -0,0 +1,910 @@
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**eup-jchwidow
+(./eup-jchwidow.tex TEST
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 378.1154fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\jpy す
+..\glue(refer from jfm) 4.58203 minus 2.291
+..\jpy 「
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.19 \TEST{す{\kcatcode`す=18 す}「。}
+                                           
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.20 \TEST{\CR。}
+                  
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.22 \TEST{\Ucharcat`す 16。}
+                               
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.23 \TEST{\Ucharcat`す 17。}
+                               
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.24 \TEST{\Ucharcat`す 18。}
+                               
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.25 \TEST{\Ucharcat`す 19。}
+                               
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.28 \TEST{す。}
+                  
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.29 \TEST{す\char\kuten"0103}
+                               
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.31 \TEST{す\kchar\kuten"0103}
+                                
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.34 \TEST{\char\kuten"0419。}
+                               
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.35 \TEST{\char\kuten"0419\char\kuten"0103}
+                                            
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.37 \TEST{\char\kuten"0419\kchar\kuten"0103}
+                                             
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.40 \TEST{\KR。}
+                  
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.41 \TEST{\kchar\kuten"0419。}
+                                
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.42 \TEST{\kchar\kuten"0419\char\kuten"0103}
+                                             
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.43 \TEST{\kchar\kuten"0419\kchar\kuten"0103}
+                                              
+
+KCHAR"3B1, kcatcode=15
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 387.73756fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.50   \TEST{い\kchar"03B1。}
+                               
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.35973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.51   \TEST{\kchar"03B1。}
+                            
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.35973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.52   \TEST{\relax\kchar"03B1。}
+                                  
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 396.95973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\rule(*+*)x0.4
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.53   \TEST{\vrule\kchar"03B1。}
+                                  
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 391.80415fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\glue(\xkanjiskip) 0.0
+..\cmr b
+..\glue(\xkanjiskip) 0.0
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.54   \TEST{b\kchar"03B1。}
+                             
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 387.73756fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.55   \TEST{い\S。}
+                      
+
+CHAR"3B1, kcatcode=15
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 387.73756fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.60   \TEST{い\char"03B1。}
+                              
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.35973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.61   \TEST{\char"03B1。}
+                           
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.35973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.62   \TEST{\relax\char"03B1。}
+                                 
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 396.95973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\rule(*+*)x0.4
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.63   \TEST{\vrule\char"03B1。}
+                                 
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 391.80415fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\glue(\xkanjiskip) 0.0
+..\cmr b
+..\glue(\xkanjiskip) 0.0
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.64   \TEST{b\char"03B1。}
+                            
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 387.73756fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.65   \TEST{い\S。}
+                      
+
+KCHARDEF"3B1, kcatcode=15
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 387.73756fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.70   \TEST{い\KA 。}
+                        
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.35973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.71   \TEST{\KA 。}
+                     
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.35973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.72   \TEST{\relax\KA 。}
+                           
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 396.95973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\rule(*+*)x0.4
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.73   \TEST{\vrule\KA 。}
+                           
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 391.80415fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\glue(\xkanjiskip) 0.0
+..\cmr b
+..\glue(\xkanjiskip) 0.0
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.74   \TEST{b\KA 。}
+                      
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 387.73756fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.75   \TEST{い\S。}
+                      
+
+CHARDEF"3B1, kcatcode=15
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 387.73756fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.80   \TEST{い\CA 。}
+                        
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.35973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.81   \TEST{\CA 。}
+                     
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.35973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.82   \TEST{\relax\CA 。}
+                           
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 396.95973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\rule(*+*)x0.4
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.83   \TEST{\vrule\CA 。}
+                           
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 391.80415fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\glue(\xkanjiskip) 0.0
+..\cmr b
+..\glue(\xkanjiskip) 0.0
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.84   \TEST{b\CA 。}
+                      
+
+ )
+No pages of output.

Modified: trunk/Build/source/texk/web2c/euptexdir/upkcat.test
===================================================================
--- trunk/Build/source/texk/web2c/euptexdir/upkcat.test	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/euptexdir/upkcat.test	2025-01-02 12:27:29 UTC (rev 73271)
@@ -1,6 +1,6 @@
 #! /bin/sh -vx
 # $Id$
-# Copyright 2022 TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
+# Copyright 2022-2025 TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
 # You may freely use, modify and/or distribute this file.
 
 BinDir=${BinDir:-.}
@@ -12,8 +12,18 @@
 TEXMFCNF=$srcdir/../kpathsea; export TEXMFCNF
 TEXINPUTS="$srcdir/uptexdir/tests;."; export TEXINPUTS
 
-$_euptex -ini -etex -interaction batchmode -jobname upkcat-log kcat.tex || exit 1
-grep '::' upkcat-log.log > upkcat-log_ed.log \
-  && diff upkcat-log_ed.log $srcdir/uptexdir/tests/upkcat.txt || exit 2
+rm -f eupkcat*log*.log
 
+$_euptex -ini -etex -interaction batchmode -jobname eupkcat-log kcat.tex || exit 1
+grep '::' eupkcat-log.log > eupkcat-log_ed.log \
+  && diff eupkcat-log_ed.log $srcdir/uptexdir/tests/upkcat.txt || exit 2
+
+$_euptex -ini -etex -interaction batchmode -jobname eupkcat-e-log -kanji-internal=euc kcat.tex || exit 3
+grep '::' eupkcat-e-log.log > eupkcat-e-log_ed.log \
+  && diff eupkcat-e-log_ed.log $srcdir/uptexdir/tests/upkcat-e.txt || exit 4
+
+$_euptex -ini -etex -interaction batchmode -jobname eupkcat-s-log -kanji-internal=sjis kcat.tex || exit 5
+grep '::' eupkcat-s-log.log > eupkcat-s-log_ed.log \
+  && diff eupkcat-s-log_ed.log $srcdir/uptexdir/tests/upkcat-s.txt || exit 6
+
 exit 0

Modified: trunk/Build/source/texk/web2c/ptexdir/COPYRIGHT
===================================================================
--- trunk/Build/source/texk/web2c/ptexdir/COPYRIGHT	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/ptexdir/COPYRIGHT	2025-01-02 12:27:29 UTC (rev 73271)
@@ -1,5 +1,5 @@
 Copyright (C) 2009 ASCII MEDIA WORKS.
-Copyright (C) 2010-2023 Japanese TeX Development Community
+Copyright (C) 2010-2025 Japanese TeX Development Community
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without

Modified: trunk/Build/source/texk/web2c/ptexdir/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/ptexdir/ChangeLog	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/ptexdir/ChangeLog	2025-01-02 12:27:29 UTC (rev 73271)
@@ -1,3 +1,13 @@
+2025-01-02  TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
+
+	* ptex-prntknj.test, tests/pknj-{e,s}.log:
+	Update tests.
+	* ptex-widow.test, tests/p-jchwidow.log,
+	am/ptex.am: Add new tests for widow penalty originally
+	written by Kitagawa-san.
+	https://github.com/texjporg/tex-jp-build/issues/103
+	* COPYRIGHT: copyright year.
+
 2024-09-22  TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
 
 	* ptex-base.ch, ptex_version.h: Version p4.1.2.

Modified: trunk/Build/source/texk/web2c/ptexdir/am/ptex.am
===================================================================
--- trunk/Build/source/texk/web2c/ptexdir/am/ptex.am	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/ptexdir/am/ptex.am	2025-01-02 12:27:29 UTC (rev 73271)
@@ -110,11 +110,11 @@
 	ptexdir/wcfname.test \
 	ptexdir/ptex-ctrlsym.test \
 	ptexdir/ptex-prntknj.test \
-	ptexdir/ptex-ucs.test
+	ptexdir/ptex-ucs.test ptexdir/ptex-widow.test
 ptexdir/ptriptest.log: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
 ptexdir/pver.log ptexdir/wcfname.log \
 	ptexdir/ptex-ctrlsym.log ptexdir/ptex-prntknj.log \
-	ptexdir/ptex-ucs.log: ptex$(EXEEXT)
+	ptexdir/ptex-ucs.log ptexdir/ptex-widow.log: ptex$(EXEEXT)
 
 EXTRA_DIST += $(ptex_tests) $(pweb_tests)
 DISTCLEANFILES += $(pweb_programs:=.c) $(pweb_programs:=.h) \
@@ -182,15 +182,18 @@
 	ptexdir/tests/ptexlineendmode.tex ptexdir/tests/p-lineenda.typ
 DISTCLEANFILES += p-ctrlsym.log p-ctrlsym.out p-ctrlsym.tex \
 	p-endline*.* p-jctrlsym*.* p-chartoken.* p-lineend.*
-## ptex-prntknj.test
+## ptexdir/ptex-prntknj.test
 EXTRA_DIST += ptexdir/tests/printkanji.tex \
 	ptexdir/tests/pknj-s.log ptexdir/tests/pknj-e.log \
 	ptexdir/tests/p-pknj-sa.typ ptexdir/tests/p-pknj-ea.typ
 DISTCLEANFILES += p-pknj-*.*
-## ptex-ucs.test
+## ptexdir/ptex-ucs.test
 EXTRA_DIST += ptexdir/tests/ucs.tex ptexdir/tests/ucs-s.log \
 	ptexdir/tests/ucs-e.log
 DISTCLEANFILES += p-ucs*.*
+## ptexdir/ptex-widow.test
+EXTRA_DIST += ptexdir/tests/p-jchwidow.log
+DISTCLEANFILES += p-jchwidow*.*
 
 ptrip.diffs: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
 	$(triptrap_diffs) $@

Modified: trunk/Build/source/texk/web2c/ptexdir/ptex-prntknj.test
===================================================================
--- trunk/Build/source/texk/web2c/ptexdir/ptex-prntknj.test	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/ptexdir/ptex-prntknj.test	2025-01-02 12:27:29 UTC (rev 73271)
@@ -31,8 +31,8 @@
 $_ptex -fmt=p-basic-sjis -kanji-internal=sjis -jobname=p-pknj-s -interaction=batchmode printkanji || :
 $_ptex -fmt=p-basic-euc  -kanji-internal=euc  -jobname=p-pknj-e -interaction=batchmode printkanji || :
 
-sed 1d p-pknj-s.log >p-pknj-s.out
-sed 1d p-pknj-e.log >p-pknj-e.out
+sed "1d;s/characters out of 621947.$/characters out of 621947X/" p-pknj-s.log >p-pknj-s.out
+sed "1d;s/characters out of 621947.$/characters out of 621947X/" p-pknj-e.log >p-pknj-e.out
 
 diff $srcdir/ptexdir/tests/pknj-s.log p-pknj-s.out || exit 10
 diff $srcdir/ptexdir/tests/pknj-e.log p-pknj-e.out || exit 11

Added: trunk/Build/source/texk/web2c/ptexdir/ptex-widow.test
===================================================================
--- trunk/Build/source/texk/web2c/ptexdir/ptex-widow.test	                        (rev 0)
+++ trunk/Build/source/texk/web2c/ptexdir/ptex-widow.test	2025-01-02 12:27:29 UTC (rev 73271)
@@ -0,0 +1,38 @@
+#! /bin/sh -vx
+# Copyright 2025 Japanese TeX Development Community <issue at texjp.org>
+# You may freely use, modify and/or distribute this file.
+
+BinDir=${BinDir:-.}
+ExeExt=${ExeExt:-}
+_ptex=$BinDir/ptex$ExeExt
+
+LC_ALL=C; export LC_ALL;  LANGUAGE=C; export LANGUAGE
+
+TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF
+TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS
+TEXFONTS=".;$srcdir//tests"; export TEXFONTS
+TEXFORMATS=.; export TEXFORMATS
+
+# get same filename in log
+rm -f p-jchwidow*.*
+$LN_S $srcdir/uptexdir/tests/jchwidow.tex ./p-jchwidow.tex
+
+if test ! -f ./p-basic.tex; then
+  cp $srcdir/tests/dump-basic.tex ./p-basic.tex
+fi
+if test ! -f ./p-basic-sjis.fmt; then
+  $_ptex -ini -kanji-internal=sjis  -jobname=p-basic-sjis p-basic || exit 1
+fi
+if test ! -f ./p-basic-euc.fmt; then
+  $_ptex -ini -kanji-internal=euc   -jobname=p-basic-euc  p-basic || exit 2
+fi
+
+$_ptex -fmt=p-basic-sjis -kanji-internal=sjis -jobname=p-jchwidow-s -interaction=batchmode p-jchwidow || :
+$_ptex -fmt=p-basic-euc  -kanji-internal=euc  -jobname=p-jchwidow-e -interaction=batchmode p-jchwidow || :
+
+sed 1d p-jchwidow-s.log >p-jchwidow-s.out
+sed 1d p-jchwidow-e.log >p-jchwidow-e.out
+
+diff $srcdir/ptexdir/tests/p-jchwidow.log p-jchwidow-s.out || exit 10
+diff $srcdir/ptexdir/tests/p-jchwidow.log p-jchwidow-e.out || exit 11
+


Property changes on: trunk/Build/source/texk/web2c/ptexdir/ptex-widow.test
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Build/source/texk/web2c/ptexdir/tests/p-jchwidow.log
===================================================================
--- trunk/Build/source/texk/web2c/ptexdir/tests/p-jchwidow.log	                        (rev 0)
+++ trunk/Build/source/texk/web2c/ptexdir/tests/p-jchwidow.log	2025-01-02 12:27:29 UTC (rev 73271)
@@ -0,0 +1,470 @@
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**p-jchwidow
+(./p-jchwidow.tex TEST
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 378.1154fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\jpy す
+..\glue(refer from jfm) 4.58203 minus 2.291
+..\jpy 「
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.19 \TEST{す{\kcatcode`す=18 す}「。}
+                                      
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.20 \TEST{\CR。}
+                 
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.28 \TEST{す。}
+                
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.29 \TEST{す\char\kuten"0103}
+                              
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.34 \TEST{\char\kuten"0419。}
+                              
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.35 \TEST{\char\kuten"0419\char\kuten"0103}
+                                            
+
+! Invalid code (15), should be in the range 16..18.
+l.46 {\kcatcode`α=15
+                     
+I'm going to use 16 instead of that illegal code value.
+
+CHAR"3B1, kcatcode=15
+! Bad character code (945).
+<to be read again> 
+                   。\BAD.
+\TEST ...kens \undefined \else \scantokens \fi {#1
+                                                  }}\showboxbreadth 10000\sh...
+l.60   \TEST{い\char"03B1。}
+                            
+A character number must be between 0 and 255, or KANJI code.
+I changed this one to zero.
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 391.10971fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\cmr ^^@
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.60   \TEST{い\char"03B1。}
+                            
+
+! Bad character code (945).
+<to be read again> 
+                   。\BAD.
+\TEST ...kens \undefined \else \scantokens \fi {#1
+                                                  }}\showboxbreadth 10000\sh...
+l.61   \TEST{\char"03B1。}
+                          
+A character number must be between 0 and 255, or KANJI code.
+I changed this one to zero.
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 400.73187fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\cmr ^^@
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.61   \TEST{\char"03B1。}
+                          
+
+! Bad character code (945).
+<to be read again> 
+                   。\BAD.
+\TEST ...kens \undefined \else \scantokens \fi {#1
+                                                  }}\showboxbreadth 10000\sh...
+l.62   \TEST{\relax\char"03B1。}
+                                
+A character number must be between 0 and 255, or KANJI code.
+I changed this one to zero.
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 400.73187fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\cmr ^^@
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.62   \TEST{\relax\char"03B1。}
+                                
+
+! Bad character code (945).
+<to be read again> 
+                   。\BAD.
+\TEST ...kens \undefined \else \scantokens \fi {#1
+                                                  }}\showboxbreadth 10000\sh...
+l.63   \TEST{\vrule\char"03B1。}
+                                
+A character number must be between 0 and 255, or KANJI code.
+I changed this one to zero.
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 400.33188fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\rule(*+*)x0.4
+..\cmr ^^@
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.63   \TEST{\vrule\char"03B1。}
+                                
+
+! Bad character code (945).
+<to be read again> 
+                   。\BAD.
+\TEST ...kens \undefined \else \scantokens \fi {#1
+                                                  }}\showboxbreadth 10000\sh...
+l.64   \TEST{b\char"03B1。}
+                           
+A character number must be between 0 and 255, or KANJI code.
+I changed this one to zero.
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 395.1763fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\glue(\xkanjiskip) 0.0
+..\cmr b
+..\cmr ^^@
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.64   \TEST{b\char"03B1。}
+                           
+
+! Bad character code (945).
+<to be read again> 
+                   。\BAD.
+\TEST ...kens \undefined \else \scantokens \fi {#1
+                                                  }}\showboxbreadth 10000\sh...
+l.65   \TEST{い\S。}
+                    
+A character number must be between 0 and 255, or KANJI code.
+I changed this one to zero.
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 391.10971fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\cmr ^^@
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.65   \TEST{い\S。}
+                    
+
+CHARDEF"3B1, kcatcode=15
+! Bad character code (945).
+l.79   \chardef\CA="3B1
+                       
+A character number must be between 0 and 255, or KANJI code.
+I changed this one to zero.
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 391.10971fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\cmr ^^@
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.80   \TEST{い\CA 。}
+                      
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 400.73187fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\cmr ^^@
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.81   \TEST{\CA 。}
+                    
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 400.73187fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\cmr ^^@
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.82   \TEST{\relax\CA 。}
+                          
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 400.33188fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\rule(*+*)x0.4
+..\cmr ^^@
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.83   \TEST{\vrule\CA 。}
+                          
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 395.1763fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\glue(\xkanjiskip) 0.0
+..\cmr b
+..\cmr ^^@
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.84   \TEST{b\CA 。}
+                     
+
+ )
+No pages of output.

Modified: trunk/Build/source/texk/web2c/ptexdir/tests/pknj-e.log
===================================================================
--- trunk/Build/source/texk/web2c/ptexdir/tests/pknj-e.log	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/ptexdir/tests/pknj-e.log	2025-01-02 12:27:29 UTC (rev 73271)
@@ -213,7 +213,7 @@
  ) 
 Here is how much of TeX's memory you used:
  25 strings out of 497935
- 137 string characters out of 6219477
+ 137 string characters out of 621947X
  7541 words of memory out of 5000000
  969 multiletter control sequences out of 15000+600000
  3271 words of font info for 2 fonts, out of 8000000 for 9000

Modified: trunk/Build/source/texk/web2c/ptexdir/tests/pknj-s.log
===================================================================
--- trunk/Build/source/texk/web2c/ptexdir/tests/pknj-s.log	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/ptexdir/tests/pknj-s.log	2025-01-02 12:27:29 UTC (rev 73271)
@@ -213,7 +213,7 @@
  ) 
 Here is how much of TeX's memory you used:
  24 strings out of 497935
- 135 string characters out of 6219474
+ 135 string characters out of 621947X
  7544 words of memory out of 5000000
  968 multiletter control sequences out of 15000+600000
  3271 words of font info for 2 fonts, out of 8000000 for 9000

Modified: trunk/Build/source/texk/web2c/uptexdir/COPYRIGHT
===================================================================
--- trunk/Build/source/texk/web2c/uptexdir/COPYRIGHT	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/uptexdir/COPYRIGHT	2025-01-02 12:27:29 UTC (rev 73271)
@@ -1,5 +1,5 @@
 Copyright (C) 2009 ASCII MEDIA WORKS.
-Copyright (C) 2007-2024 Takuji Tanaka
+Copyright (C) 2007-2025 Takuji Tanaka
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without

Modified: trunk/Build/source/texk/web2c/uptexdir/COPYRIGHT.ja
===================================================================
--- trunk/Build/source/texk/web2c/uptexdir/COPYRIGHT.ja	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/uptexdir/COPYRIGHT.ja	2025-01-02 12:27:29 UTC (rev 73271)
@@ -4,7 +4,7 @@
 
 【著作権表示】
 Copyright (C) 2009 ASCII MEDIA WORKS.
-Copyright (C) 2007-2024 Takuji Tanaka
+Copyright (C) 2007-2025 Takuji Tanaka
 All rights reserved.
 
 【契約条件】

Modified: trunk/Build/source/texk/web2c/uptexdir/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/uptexdir/ChangeLog	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/uptexdir/ChangeLog	2025-01-02 12:27:29 UTC (rev 73271)
@@ -1,3 +1,16 @@
+2025-01-02  TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
+
+	* kanji.c, uptex-m.ch:
+	Accept extended upTeX internal encoding also in internal
+	encoding EUC/SJIS (pTeX-compatible mode).
+	* upkcat.test, tests/kcat.tex, tests/upkcat{,-{e,s}}.txt:
+	Update tests.
+	* uptex-widow.test, tests/jchwidow.tex, tests/up-jchwidow.log,
+	am/uptex.am: Add new tests for widow penalty originally
+	written by Kitagawa-san.
+	https://github.com/texjporg/tex-jp-build/issues/103
+	* COPYRIGHT, COPYRIGHT.ja: copyright year.
+
 2024-10-20  TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
 
 	* uptex-m.ch, uptex.defines, kanji.{c,h}:

Modified: trunk/Build/source/texk/web2c/uptexdir/am/uptex.am
===================================================================
--- trunk/Build/source/texk/web2c/uptexdir/am/uptex.am	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/uptexdir/am/uptex.am	2025-01-02 12:27:29 UTC (rev 73271)
@@ -173,13 +173,15 @@
 	uptexdir/upkcat.test \
 	uptexdir/wcfname.test uptexdir/wcfname0.test \
 	uptexdir/uptex-ofm.test uptexdir/uptex-prim.test \
-	uptexdir/uptex-lmr.test uptexdir/uptex-noto.test
+	uptexdir/uptex-lmr.test uptexdir/uptex-noto.test \
+	uptexdir/uptex-widow.test
 uptexdir/uptriptest.log uptexdir/ptriptest.log: \
 	uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
 uptexdir/upver.log uptexdir/upkcat.log \
 	uptexdir/wcfname.log uptexdir/wcfname0.log \
 	uptexdir/uptex-ofm.log uptexdir/uptex-prim.log \
-	uptexdir/uptex-lmr.log uptexdir/uptex-noto.log: uptex$(EXEEXT)
+	uptexdir/uptex-lmr.log uptexdir/uptex-noto.log \
+	uptexdir/uptex-widow.log: uptex$(EXEEXT)
 upweb_tests = \
 	uptexdir/upbibtex.test \
 	uptexdir/updvitype.test \
@@ -283,6 +285,9 @@
 ## uptexdir/uptex-noto.test
 EXTRA_DIST += uptexdir/tests/noto1.tex uptexdir/tests/up-noto1.log
 DISTCLEANFILES += up-noto*.*
+## uptexdir/uptex-widow.test
+EXTRA_DIST += uptexdir/tests/jchwidow.tex uptexdir/tests/up-jchwidow.log
+DISTCLEANFILES += up-jchwidow.*
 
 uptrip.diffs: uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
 	$(triptrap_diffs) $@

Modified: trunk/Build/source/texk/web2c/uptexdir/kanji.c
===================================================================
--- trunk/Build/source/texk/web2c/uptexdir/kanji.c	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/uptexdir/kanji.c	2025-01-02 12:27:29 UTC (rev 73271)
@@ -9,6 +9,7 @@
 #define IVS_CHAR_LIMIT  0x4400000
 #define CJK_CHAR_LIMIT  0x1000000
 #define LATIN_CHAR_LIMIT   0x2E80
+#define UCS_CHAR_LIMIT   0x110000
 #define CJK_TOKEN_FLAG   0xFFFFFF
 #define CAT_LEFT_BRACE  1
 #define CAT_DELIM_NUM  15
@@ -48,7 +49,8 @@
     if (is_internalUPTEX())
         return ((c >= 0)&&(c<IVS_CHAR_LIMIT));
     else
-        return iskanji1(Hi(c)) && iskanji2(Lo(c));
+        return ((iskanji1(Hi(c)) && iskanji2(Lo(c))) ||
+                (UCS_CHAR_LIMIT<=c && c<IVS_CHAR_LIMIT));
 }
 
 boolean ismultiprn(integer c)
@@ -523,7 +525,7 @@
 integer kcatcodekey(integer c)
 {
     integer block;
-    if (is_internalUPTEX()) {
+    if (is_internalUPTEX() || (UCS_CHAR_LIMIT<=c && c<IVS_CHAR_LIMIT)) {
         block = binary_search((long)c, ucs_range, 0, NUCS_RANGE-1);
         switch (block) {
         case 0x01:         /* Block : Latin-1 Supplement */

Added: trunk/Build/source/texk/web2c/uptexdir/tests/jchwidow.tex
===================================================================
--- trunk/Build/source/texk/web2c/uptexdir/tests/jchwidow.tex	                        (rev 0)
+++ trunk/Build/source/texk/web2c/uptexdir/tests/jchwidow.tex	2025-01-02 12:27:29 UTC (rev 73271)
@@ -0,0 +1,88 @@
+%#!euptex
+\font\cmr=cmr10\cmr
+\ifx\kanjiskip\undefined\else
+  \ifnum\jis"2121="3000
+    \jfont\jpy=umin10 at 10pt\jpy
+  \else
+    \jfont\jpy=min10 at 10pt\jpy
+  \fi
+\fi
+
+\def\TEST#1{{\setbox0=\vbox{\noindent
+  ああああああ%
+  \ifx\scantokens\undefined\else\scantokens\fi
+  {#1}}\showboxbreadth10000\showboxdepth10000\tracingonline1\showbox0}}
+
+\message{TEST}
+
+\chardef\CR=`す
+\TEST{す{\kcatcode`す=18 す}「。}
+\TEST{\CR。}
+\ifx\Ucharcat\undefined\else
+\TEST{\Ucharcat`す 16。}
+\TEST{\Ucharcat`す 17。}
+\TEST{\Ucharcat`す 18。}
+\TEST{\Ucharcat`す 19。}
+\fi
+
+\TEST{す。}
+\TEST{す\char\kuten"0103}
+\ifx\kchar\undefined\else
+\TEST{す\kchar\kuten"0103}
+\fi
+
+\TEST{\char\kuten"0419。}
+\TEST{\char\kuten"0419\char\kuten"0103}
+\ifx\kchar\undefined\else
+\TEST{\char\kuten"0419\kchar\kuten"0103}
+
+\kchardef\KR=`す
+\TEST{\KR。}
+\TEST{\kchar\kuten"0419。}
+\TEST{\kchar\kuten"0419\char\kuten"0103}
+\TEST{\kchar\kuten"0419\kchar\kuten"0103}
+\fi
+
+{\kcatcode`α=15
+\ifx\kchar\undefined\else
+  \message{KCHAR"3B1, kcatcode=15}
+  \def\S{\kchar"03B1}
+  \TEST{い\kchar"03B1。}
+  \TEST{\kchar"03B1。}
+  \TEST{\relax\kchar"03B1。}
+  \TEST{\vrule\kchar"03B1。}
+  \TEST{b\kchar"03B1。}
+  \TEST{い\S。}
+\fi
+
+  \message{CHAR"3B1, kcatcode=15}
+  \def\S{\char"03B1}
+  \TEST{い\char"03B1。}
+  \TEST{\char"03B1。}
+  \TEST{\relax\char"03B1。}
+  \TEST{\vrule\char"03B1。}
+  \TEST{b\char"03B1。}
+  \TEST{い\S。}
+
+\ifx\kchardef\undefined\else
+  \message{KCHARDEF"3B1, kcatcode=15}
+  \kchardef\KA="3B1
+  \TEST{い\KA 。}
+  \TEST{\KA 。}
+  \TEST{\relax\KA 。}
+  \TEST{\vrule\KA 。}
+  \TEST{b\KA 。}
+  \TEST{い\S。}
+\fi
+
+  \message{CHARDEF"3B1, kcatcode=15}
+  \chardef\CA="3B1
+  \TEST{い\CA 。}
+  \TEST{\CA 。}
+  \TEST{\relax\CA 。}
+  \TEST{\vrule\CA 。}
+  \TEST{b\CA 。}
+}
+
+\bye
+

Modified: trunk/Build/source/texk/web2c/uptexdir/tests/kcat.tex
===================================================================
--- trunk/Build/source/texk/web2c/uptexdir/tests/kcat.tex	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/uptexdir/tests/kcat.tex	2025-01-02 12:27:29 UTC (rev 73271)
@@ -16,6 +16,9 @@
 % other_kchar=18 {cjk symbol codes}
 % hangul=19 {hangul codes}
 
+\ifnum\jis"2121="3000
+% upTeX, UCS code
+
 % separate in blocks
 \write16{0x00C0::\the\kcatcode"00C0}% U+00C0 "Latin-1 Letters" in Latin-1 Supplement
 \write16{§::\the\kcatcode"00A7}% U+00A7 Latin-1 Supplement
@@ -48,8 +51,6 @@
 \write16{丽::\the\kcatcode"2F800}% U+2F800 CJK Compatibility Ideographs Supplement
 \write16{𰀀::\the\kcatcode"30000}% U+30000 CJK Unified Ideographs Extension G
 \write16{𱍐::\the\kcatcode"31350}% U+31350 CJK Unified Ideographs Extension H
-\write16{逸︀::\the\kcatcode"409038}% U+9038 U+FE00 Standardized Variation Sequence
-\write16{逸󠄀::\the\kcatcode"809038}% U+9038 U+E0100 Ideographic Variation Sequence
 
 % kana=17 {hiragana, katakana}
 \write16{あ::\the\kcatcode"3042}% U+3042 Hiragana
@@ -59,8 +60,6 @@
 \write16{𛀀::\the\kcatcode"1B000}% U+1B000 Kana Supplement
 \write16{𛄀::\the\kcatcode"1B100}% U+1B100 Kana Extended-A
 \write16{𛅐::\the\kcatcode"1B150}% U+1B150 Small Kana Extension
-\write16{あ゙::\the\kcatcode"223042}% U+3042 U+3099 Kana with Voiced Sound Mark
-\write16{か゚::\the\kcatcode"24304B}% U+304B U+309A Kana with Semi-Voiced Sound Mark
 
 % other_kchar=18 {cjk symbol codes}
 \write16{※::\the\kcatcode"203B}% U+203B General Punctuation
@@ -75,9 +74,6 @@
 \write16{〠::\the\kcatcode"3020}% U+3020 CJK Symbols and Punctuation
 \write16{㋐::\the\kcatcode"32D0}% U+32D0 Enclosed CJK Letters and Months
 \write16{㍿::\the\kcatcode"337F}% U+337F CJK Compatibility
-\write16{🇯🇵::\the\kcatcode"25EFF5}% U+1F1EF U+1F1F5 Emoji Flag Sequence
-\write16{👶🏽::\the\kcatcode"2BF476}% U+1F476 U+1F3FD Emoji with Modifier Fitzpatrick
-\write16{0x800030::\the\kcatcode"800030}% U+0030 U+FE0F U+20E3 Emoji Keycap Sequence
 
 % hangul=19 {hangul codes}
 \write16{ᄀ::\the\kcatcode"1100}% U+1100 Hangul Jamo
@@ -94,4 +90,68 @@
 \write16{︀::\the\kcatcode"FE00}% U+FE00 Variation Selector
 \write16{󠄀::\the\kcatcode"E0100}% U+E0100 Variation Selector
 
+\else
+% pTeX-compatible, EUC / Shift_JIS code, 1..94ku
+
+\write16{1区::\the\expandafter\kcatcode\jis"2121}
+\write16{2区::\the\expandafter\kcatcode\jis"2221}
+\write16{3区::\the\expandafter\kcatcode\jis"2321}
+\write16{4区::\the\expandafter\kcatcode\jis"2421}
+\write16{5区::\the\expandafter\kcatcode\jis"2521}
+\write16{6区::\the\expandafter\kcatcode\jis"2621}
+\write16{7区::\the\expandafter\kcatcode\jis"2721}
+\write16{8区::\the\expandafter\kcatcode\jis"2821}
+\write16{9区::\the\expandafter\kcatcode\jis"2921}
+\write16{10区::\the\expandafter\kcatcode\jis"2A21}
+\write16{11区::\the\expandafter\kcatcode\jis"2B21}
+\write16{12区::\the\expandafter\kcatcode\jis"2C21}
+\write16{13区::\the\expandafter\kcatcode\jis"2D21}
+\write16{14区::\the\expandafter\kcatcode\jis"2E21}
+\write16{15区::\the\expandafter\kcatcode\jis"2F21}
+\write16{16区::\the\expandafter\kcatcode\jis"3021}
+\write16{17区::\the\expandafter\kcatcode\jis"3121}
+\write16{18区::\the\expandafter\kcatcode\jis"3221}
+\write16{19区::\the\expandafter\kcatcode\jis"3321}
+\write16{20区::\the\expandafter\kcatcode\jis"3421}
+\write16{21区::\the\expandafter\kcatcode\jis"3521}
+\write16{22区::\the\expandafter\kcatcode\jis"3621}
+\write16{23区::\the\expandafter\kcatcode\jis"3721}
+\write16{24区::\the\expandafter\kcatcode\jis"3821}
+\write16{80区::\the\expandafter\kcatcode\jis"7021}
+\write16{81区::\the\expandafter\kcatcode\jis"7121}
+\write16{82区::\the\expandafter\kcatcode\jis"7221}
+\write16{83区::\the\expandafter\kcatcode\jis"7321}
+\write16{84区::\the\expandafter\kcatcode\jis"7421}
+\write16{90区::\the\expandafter\kcatcode\jis"7A21}
+\write16{91区::\the\expandafter\kcatcode\jis"7B21}
+\write16{92区::\the\expandafter\kcatcode\jis"7C21}
+\write16{93区::\the\expandafter\kcatcode\jis"7D21}
+\write16{94区::\the\expandafter\kcatcode\jis"7E21}
+\ifnum\jis"2121="8140
+% extended Shift_JIS code, 95..120ku
+\write16{95区(ext)::\the\expandafter\kcatcode\sjis"F040}
+\write16{96区(ext)::\the\expandafter\kcatcode\sjis"F09F}
+\write16{97区(ext)::\the\expandafter\kcatcode\sjis"F140}
+\write16{98区(ext)::\the\expandafter\kcatcode\sjis"F19F}
+\write16{117区(ext)::\the\expandafter\kcatcode\sjis"FB40}
+\write16{118区(ext)::\the\expandafter\kcatcode\sjis"FB9F}
+\write16{119区(ext)::\the\expandafter\kcatcode\sjis"FC40}
+\write16{120区(ext)::\the\expandafter\kcatcode\sjis"FC9F}
+\fi
+\fi
+
+% upTeX internal encoding
+
+\write16{0x110000::\the\kcatcode"110000}% japanese-otf-uptex
+\write16{0x120000::\the\kcatcode"120000}% japanese-otf-uptex
+\write16{0x130000::\the\kcatcode"130000}% japanese-otf-uptex
+\write16{0x140000::\the\kcatcode"140000}% japanese-otf-uptex
+\write16{あ゙::\the\kcatcode"223042}% U+3042 U+3099 Kana with Voiced Sound Mark
+\write16{か゚::\the\kcatcode"24304B}% U+304B U+309A Kana with Semi-Voiced Sound Mark
+\write16{🇯🇵::\the\kcatcode"25EFF5}% U+1F1EF U+1F1F5 Emoji Flag Sequence
+\write16{👶🏽::\the\kcatcode"2BF476}% U+1F476 U+1F3FD Emoji with Modifier Fitzpatrick
+\write16{0x800030::\the\kcatcode"800030}% U+0030 U+FE0F U+20E3 Emoji Keycap Sequence
+\write16{逸︀::\the\kcatcode"409038}% U+9038 U+FE00 Standardized Variation Sequence
+\write16{逸󠄀::\the\kcatcode"809038}% U+9038 U+E0100 Ideographic Variation Sequence
+
 \relax\end

Added: trunk/Build/source/texk/web2c/uptexdir/tests/up-jchwidow.log
===================================================================
--- trunk/Build/source/texk/web2c/uptexdir/tests/up-jchwidow.log	                        (rev 0)
+++ trunk/Build/source/texk/web2c/uptexdir/tests/up-jchwidow.log	2025-01-02 12:27:29 UTC (rev 73271)
@@ -0,0 +1,817 @@
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**up-jchwidow
+(./up-jchwidow.tex TEST
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 378.1154fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\jpy す
+..\glue(refer from jfm) 4.58203 minus 2.291
+..\jpy 「
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.19 \TEST{す{\kcatcode`す=18 す}「。}
+                                           
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.20 \TEST{\CR。}
+                  
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.28 \TEST{す。}
+                  
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.29 \TEST{す\char\kuten"0103}
+                               
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.31 \TEST{す\kchar\kuten"0103}
+                                
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.34 \TEST{\char\kuten"0419。}
+                               
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.35 \TEST{\char\kuten"0419\char\kuten"0103}
+                                            
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.37 \TEST{\char\kuten"0419\kchar\kuten"0103}
+                                             
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.40 \TEST{\KR。}
+                  
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.41 \TEST{\kchar\kuten"0419。}
+                                
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.42 \TEST{\kchar\kuten"0419\char\kuten"0103}
+                                             
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.84087fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy す
+..\kern-0.48114
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.43 \TEST{\kchar\kuten"0419\kchar\kuten"0103}
+                                              
+
+KCHAR"3B1, kcatcode=15
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 387.73756fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.50   \TEST{い\kchar"03B1。}
+                               
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.35973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.51   \TEST{\kchar"03B1。}
+                            
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.35973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.52   \TEST{\relax\kchar"03B1。}
+                                  
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 396.95973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\rule(*+*)x0.4
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.53   \TEST{\vrule\kchar"03B1。}
+                                  
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 391.80415fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\glue(\xkanjiskip) 0.0
+..\cmr b
+..\glue(\xkanjiskip) 0.0
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.54   \TEST{b\kchar"03B1。}
+                             
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 387.73756fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.55   \TEST{い\S。}
+                      
+
+CHAR"3B1, kcatcode=15
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 387.73756fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.60   \TEST{い\char"03B1。}
+                              
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.35973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.61   \TEST{\char"03B1。}
+                           
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.35973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.62   \TEST{\relax\char"03B1。}
+                                 
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 396.95973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\rule(*+*)x0.4
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.63   \TEST{\vrule\char"03B1。}
+                                 
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 391.80415fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\glue(\xkanjiskip) 0.0
+..\cmr b
+..\glue(\xkanjiskip) 0.0
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.64   \TEST{b\char"03B1。}
+                            
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 387.73756fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.65   \TEST{い\S。}
+                      
+
+KCHARDEF"3B1, kcatcode=15
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 387.73756fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.70   \TEST{い\KA 。}
+                        
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.35973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.71   \TEST{\KA 。}
+                     
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.35973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.72   \TEST{\relax\KA 。}
+                           
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 396.95973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\rule(*+*)x0.4
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.73   \TEST{\vrule\KA 。}
+                           
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 391.80415fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\glue(\xkanjiskip) 0.0
+..\cmr b
+..\glue(\xkanjiskip) 0.0
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.74   \TEST{b\KA 。}
+                      
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 387.73756fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.75   \TEST{い\S。}
+                      
+
+CHARDEF"3B1, kcatcode=15
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 387.73756fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy い
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.80   \TEST{い\CA 。}
+                        
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.35973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.81   \TEST{\CA 。}
+                     
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 397.35973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.82   \TEST{\relax\CA 。}
+                           
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 396.95973fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\rule(*+*)x0.4
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.83   \TEST{\vrule\CA 。}
+                           
+
+> \box0=
+\vbox(7.77588+1.38855)x469.75499, yoko direction
+.\hbox(7.77588+1.38855)x469.75499, glue set 391.80415fil
+..\displace 0.0
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\jpy あ
+..\glue(\xkanjiskip) 0.0
+..\cmr b
+..\glue(\xkanjiskip) 0.0
+..\jpy α
+..\jpy 。
+..\penalty 10000
+..\glue(\parfillskip) 0.0 plus 1.0fil
+..\glue(\rightskip) 0.0
+
+! OK.
+<to be read again> 
+                   }
+l.84   \TEST{b\CA 。}
+                      
+
+ )
+No pages of output.

Added: trunk/Build/source/texk/web2c/uptexdir/tests/upkcat-e.txt
===================================================================
--- trunk/Build/source/texk/web2c/uptexdir/tests/upkcat-e.txt	                        (rev 0)
+++ trunk/Build/source/texk/web2c/uptexdir/tests/upkcat-e.txt	2025-01-02 12:27:29 UTC (rev 73271)
@@ -0,0 +1,45 @@
+1区::18
+2区::18
+3区::17
+4区::17
+5区::17
+6区::17
+7区::18
+8区::18
+9区::18
+10区::18
+11区::18
+12区::18
+13区::18
+14区::16
+15区::16
+16区::16
+17区::16
+18区::16
+19区::16
+20区::16
+21区::16
+22区::16
+23区::16
+24区::16
+80区::16
+81区::16
+82区::16
+83区::16
+84区::16
+90区::16
+91区::16
+92区::16
+93区::16
+94区::16
+0x110000::16
+0x120000::16
+0x130000::16
+0x140000::16
+あ^^e3^^82^^99::17
+か^^e3^^82^^9a::17
+^^f0^^9f^^87^^af^^f0^^9f^^87^^b5::18
+^^f0^^9f^^91^^b6^^f0^^9f^^8f^^bd::18
+0x800030::18
+逸^^ef^^b8^^80::16
+逸^^f3^^a0^^84^^80::16

Added: trunk/Build/source/texk/web2c/uptexdir/tests/upkcat-s.txt
===================================================================
--- trunk/Build/source/texk/web2c/uptexdir/tests/upkcat-s.txt	                        (rev 0)
+++ trunk/Build/source/texk/web2c/uptexdir/tests/upkcat-s.txt	2025-01-02 12:27:29 UTC (rev 73271)
@@ -0,0 +1,53 @@
+1区::18
+2区::18
+3区::17
+4区::17
+5区::17
+6区::17
+7区::18
+8区::18
+9区::18
+10区::18
+11区::18
+12区::18
+13区::18
+14区::16
+15区::16
+16区::16
+17区::16
+18区::16
+19区::16
+20区::16
+21区::16
+22区::16
+23区::16
+24区::16
+80区::16
+81区::16
+82区::16
+83区::16
+84区::16
+90区::16
+91区::16
+92区::16
+93区::16
+94区::16
+95区(ext)::16
+96区(ext)::16
+97区(ext)::16
+98区(ext)::16
+117区(ext)::16
+118区(ext)::16
+119区(ext)::16
+120区(ext)::16
+0x110000::16
+0x120000::16
+0x130000::16
+0x140000::16
+あ^^e3^^82^^99::17
+か^^e3^^82^^9a::17
+^^f0^^9f^^87^^af^^f0^^9f^^87^^b5::18
+^^f0^^9f^^91^^b6^^f0^^9f^^8f^^bd::18
+0x800030::18
+逸^^ef^^b8^^80::16
+逸^^f3^^a0^^84^^80::16

Modified: trunk/Build/source/texk/web2c/uptexdir/tests/upkcat.txt
===================================================================
--- trunk/Build/source/texk/web2c/uptexdir/tests/upkcat.txt	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/uptexdir/tests/upkcat.txt	2025-01-02 12:27:29 UTC (rev 73271)
@@ -25,8 +25,6 @@
 丽::16
 𰀀::16
 𱍐::16
-逸︀::16
-逸󠄀::16
 あ::17
 ア::17
 ㇰ::17
@@ -34,8 +32,6 @@
 𛀀::17
 𛄀::17
 𛅐::17
-あ゙::17
-か゚::17
 ※::18
 ℃::18
 Ⅻ::18
@@ -48,9 +44,6 @@
 〠::18
 ㋐::18
 ㍿::18
-🇯🇵::18
-👶🏽::18
-0x800030::18
 ᄀ::19
 ㄱ::19
 ꥠ::19
@@ -61,3 +54,14 @@
 🏻::20
 ︀::20
 󠄀::20
+0x110000::16
+0x120000::16
+0x130000::16
+0x140000::16
+あ゙::17
+か゚::17
+🇯🇵::18
+👶🏽::18
+0x800030::18
+逸︀::16
+逸󠄀::16

Modified: trunk/Build/source/texk/web2c/uptexdir/upkcat.test
===================================================================
--- trunk/Build/source/texk/web2c/uptexdir/upkcat.test	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/uptexdir/upkcat.test	2025-01-02 12:27:29 UTC (rev 73271)
@@ -1,6 +1,6 @@
 #! /bin/sh -vx
 # $Id$
-# Copyright 2022 TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
+# Copyright 2022-2025 TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
 # You may freely use, modify and/or distribute this file.
 
 BinDir=${BinDir:-.}
@@ -12,8 +12,18 @@
 TEXMFCNF=$srcdir/../kpathsea; export TEXMFCNF
 TEXINPUTS="$srcdir/uptexdir/tests;."; export TEXINPUTS
 
+rm -f upkcat*log*.log
+
 $_uptex -ini -interaction batchmode -jobname upkcat-log kcat.tex || exit 1
 grep '::' upkcat-log.log > upkcat-log_ed.log \
   && diff upkcat-log_ed.log $srcdir/uptexdir/tests/upkcat.txt || exit 2
 
+$_uptex -ini -interaction batchmode -jobname upkcat-e-log -kanji-internal=euc kcat.tex || exit 3
+grep '::' upkcat-e-log.log > upkcat-e-log_ed.log \
+  && diff upkcat-e-log_ed.log $srcdir/uptexdir/tests/upkcat-e.txt || exit 4
+
+$_uptex -ini -interaction batchmode -jobname upkcat-s-log -kanji-internal=sjis kcat.tex || exit 5
+grep '::' upkcat-s-log.log > upkcat-s-log_ed.log \
+  && diff upkcat-s-log_ed.log $srcdir/uptexdir/tests/upkcat-s.txt || exit 6
+
 exit 0

Modified: trunk/Build/source/texk/web2c/uptexdir/uptex-m.ch
===================================================================
--- trunk/Build/source/texk/web2c/uptexdir/uptex-m.ch	2025-01-02 00:41:51 UTC (rev 73270)
+++ trunk/Build/source/texk/web2c/uptexdir/uptex-m.ch	2025-01-02 12:27:29 UTC (rev 73271)
@@ -50,6 +50,7 @@
 % (2023-09-16) TTK  upTeX u1.30
 % (2024-09-30) TTK  upTeX u1.35
 % (2024-10-20) TTK  upTeX u2.00
+% (2025-01-02) TTK  Accept extended upTeX internal encoding also in pTeX-compatible EUC/SJIS mode.
 
 @x
 \def\pTeX{p\kern-.15em\TeX}
@@ -377,9 +378,6 @@
   @+ at t\1@>for k:=@"115 to @"118 do kcat_code(k):=kana; { Kana Extended-B .. Small Kana Extension }
   @+ at t\1@>for k:=@"145 to @"14F do kcat_code(k):=kanji; { CJK Unified Ideographs Extension B .. J }
   @t\hskip10pt@>kcat_code(@"15B):=modifier; { Variation Selectors Supplement }
-  @+ at t\1@>for k:=@"170 to @"171 do kcat_code(k):=kana; { Kana with (Semi-)Voiced Sound Mark }
-  @t\hskip10pt@>kcat_code(@"175):=kanji; { Standardized Variation Sequence }
-  @+ at t\1@>for k:=@"177 to @"178 do kcat_code(k):=kanji; { Ideographic Variation Sequence }
   @+ at t\1@>for k:=@"1F9 to @"1FC do kcat_code(k):=modifier;
     { Combining Katakana-Hiragana (Semi-)Voiced Sound Mark .. Emoji Modifier Fitzpatrick }
   @t\hskip10pt@>kcat_code(@"1FD):=not_cjk; { Latin-1 Letters }
@@ -394,6 +392,10 @@
   { $\.{@@"20}+|k| = |kcatcodekey|(|fromKUTEN|(|HILO|(k,1))$ }
   @+ at t\1@>for k:=16 to 94 do kcat_code(@"A0+k):=kanji; {2 men 16 ku ... 94 ku}
 end;
+ at +@t\1@>for k:=@"15F to @"162 do kcat_code(k):=kanji; { for japanese-otf, japanese-otf-uptex }
+ at +@t\1@>for k:=@"170 to @"171 do kcat_code(k):=kana; { Kana with (Semi-)Voiced Sound Mark }
+ at t\hskip10pt@>kcat_code(@"175):=kanji; { Standardized Variation Sequence }
+ at +@t\1@>for k:=@"177 to @"178 do kcat_code(k):=kanji; { Ideographic Variation Sequence }
 @z
 
 @x

Added: trunk/Build/source/texk/web2c/uptexdir/uptex-widow.test
===================================================================
--- trunk/Build/source/texk/web2c/uptexdir/uptex-widow.test	                        (rev 0)
+++ trunk/Build/source/texk/web2c/uptexdir/uptex-widow.test	2025-01-02 12:27:29 UTC (rev 73271)
@@ -0,0 +1,32 @@
+#! /bin/sh -vx
+# Copyright 2025 Japanese TeX Development Community <issue at texjp.org>
+# You may freely use, modify and/or distribute this file.
+
+BinDir=${BinDir:-.}
+ExeExt=${ExeExt:-}
+_uptex=$BinDir/uptex$ExeExt
+
+LC_ALL=C; export LC_ALL;  LANGUAGE=C; export LANGUAGE
+
+TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF
+TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS
+TEXFONTS=".;$srcdir//tests"; export TEXFONTS
+TEXFORMATS=.; export TEXFORMATS
+
+# get same filename in log
+rm -f up-jchwidow.*
+$LN_S $srcdir/uptexdir/tests/jchwidow.tex ./up-jchwidow.tex
+
+if test ! -f ./up-basic.tex; then
+  cp $srcdir/tests/dump-basic.tex ./up-basic.tex
+fi
+if test ! -f ./up-basic.fmt; then
+  $_uptex -ini up-basic || exit 1
+fi
+
+$_uptex -fmt=up-basic -interaction=batchmode up-jchwidow || :
+
+sed 1d up-jchwidow.log >up-jchwidow.out
+
+diff $srcdir/uptexdir/tests/up-jchwidow.log up-jchwidow.out || exit 3
+


Property changes on: trunk/Build/source/texk/web2c/uptexdir/uptex-widow.test
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property


More information about the tex-live-commits mailing list.