pdftex[951] branches/stable/source/src: sync from tl r73997

commits+karl at tug.org commits+karl at tug.org
Sat Feb 15 17:07:48 CET 2025


Revision: 951
          https://tug.org/svn/pdftex?view=revision&revision=951
Author:   karl
Date:     2025-02-15 17:07:47 +0100 (Sat, 15 Feb 2025)
Log Message:
-----------
sync from tl r73997

Revision Links:
--------------
    https://tug.org/svn/pdftex?view=revision&revision=73997

Modified Paths:
--------------
    branches/stable/source/src/build-aux/ar-lib
    branches/stable/source/src/build-aux/compile
    branches/stable/source/src/build-aux/texinfo.tex
    branches/stable/source/src/doc/tlbuild-incl/install-tl.texi
    branches/stable/source/src/doc/tlbuild-incl/tlmgr.texi
    branches/stable/source/src/doc/tlbuild.info
    branches/stable/source/src/texk/README
    branches/stable/source/src/texk/kpathsea/ChangeLog
    branches/stable/source/src/texk/kpathsea/texmf.cnf
    branches/stable/source/src/texk/tests/TeXLive/TLConfig.pm
    branches/stable/source/src/texk/tests/TeXLive/TLUtils.pm
    branches/stable/source/src/texk/web2c/ChangeLog
    branches/stable/source/src/texk/web2c/Makefile.in
    branches/stable/source/src/texk/web2c/NEWS
    branches/stable/source/src/texk/web2c/am/texmf.am
    branches/stable/source/src/texk/web2c/cwebdir/ChangeLog
    branches/stable/source/src/texk/web2c/cwebdir/ctwill-mini.ch
    branches/stable/source/src/texk/web2c/cwebdir/tests/ham.ch
    branches/stable/source/src/texk/web2c/doc/luatex/luatex-callbacks.tex
    branches/stable/source/src/texk/web2c/doc/luatex/luatex-enhancements.tex
    branches/stable/source/src/texk/web2c/doc/luatex/luatex-fonts.tex
    branches/stable/source/src/texk/web2c/doc/luatex/luatex-lua.tex
    branches/stable/source/src/texk/web2c/doc/luatex/luatex-modifications.tex
    branches/stable/source/src/texk/web2c/doc/luatex/luatex-tex.tex
    branches/stable/source/src/texk/web2c/doc/luatex/luatex.pdf
    branches/stable/source/src/texk/web2c/doc/luatex/luatex.tex
    branches/stable/source/src/texk/web2c/etexdir/ChangeLog
    branches/stable/source/src/texk/web2c/etexdir/am/etex.am
    branches/stable/source/src/texk/web2c/lib/ChangeLog
    branches/stable/source/src/texk/web2c/lib/texmfmp.c
    branches/stable/source/src/texk/web2c/pdftexdir/ChangeLog
    branches/stable/source/src/texk/web2c/pdftexdir/NEWS
    branches/stable/source/src/texk/web2c/pdftexdir/am/pdftex.am
    branches/stable/source/src/texk/web2c/pdftexdir/pdftex.ch
    branches/stable/source/src/texk/web2c/pdftexdir/pdftex.web
    branches/stable/source/src/texk/web2c/silent-sh.in
    branches/stable/source/src/texk/web2c/tests/fix-changefile-lines.py
    branches/stable/source/src/texk/web2c/tex.ch
    branches/stable/source/src/utils/README

Added Paths:
-----------
    branches/stable/source/src/texk/web2c/doc/luatex/Makefile
    branches/stable/source/src/texk/web2c/tests/fonttoobig-ds1024.pl
    branches/stable/source/src/texk/web2c/tests/fonttoobig-ds1024.tfm
    branches/stable/source/src/texk/web2c/tests/fonttoobig-ds256.pl
    branches/stable/source/src/texk/web2c/tests/fonttoobig-ds256.tfm
    branches/stable/source/src/texk/web2c/tests/fonttoobig.tex
    branches/stable/source/src/texk/web2c/tests/io.tfm
    branches/stable/source/src/texk/web2c/tests/outerdel.tex
    branches/stable/source/src/texk/web2c/tests/outerdelsub.tex

Modified: branches/stable/source/src/build-aux/ar-lib
===================================================================
--- branches/stable/source/src/build-aux/ar-lib	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/build-aux/ar-lib	2025-02-15 16:07:47 UTC (rev 951)
@@ -2,7 +2,7 @@
 # Wrapper for Microsoft lib.exe
 
 me=ar-lib
-scriptversion=2024-06-19.01; # UTC
+scriptversion=2025-02-03.05; # UTC
 
 # Copyright (C) 2010-2025 Free Software Foundation, Inc.
 # Written by Peter Rosin <peda at lysator.liu.se>.
@@ -51,11 +51,22 @@
 	# lazily determine how to convert abs files
 	case `uname -s` in
 	  MINGW*)
-	    file_conv=mingw
+	    if test -n "$MSYSTEM" && (cygpath --version) >/dev/null 2>&1; then
+	      # MSYS2 environment.
+	      file_conv=cygwin
+	    else
+	      # Original MinGW environment.
+	      file_conv=mingw
+	    fi
 	    ;;
-	  CYGWIN* | MSYS*)
+	  MSYS*)
+	    # Old MSYS environment, or MSYS2 with 32-bit MSYS2 shell.
 	    file_conv=cygwin
 	    ;;
+	  CYGWIN*)
+	    # Cygwin environment.
+	    file_conv=cygwin
+	    ;;
 	  *)
 	    file_conv=wine
 	    ;;
@@ -65,8 +76,8 @@
 	mingw)
 	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
 	  ;;
-	cygwin | msys)
-	  file=`cygpath -m "$file" || echo "$file"`
+	cygwin)
+	  file=`cygpath -w "$file" || echo "$file"`
 	  ;;
 	wine)
 	  file=`winepath -w "$file" || echo "$file"`

Modified: branches/stable/source/src/build-aux/compile
===================================================================
--- branches/stable/source/src/build-aux/compile	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/build-aux/compile	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,7 +1,7 @@
 #! /bin/sh
 # Wrapper for compilers which do not understand '-c -o'.
 
-scriptversion=2024-12-03.03; # UTC
+scriptversion=2025-02-03.05; # UTC
 
 # Copyright (C) 1999-2025 Free Software Foundation, Inc.
 # Written by Tom Tromey <tromey at cygnus.com>.
@@ -37,11 +37,11 @@
 
 file_conv=
 
-# func_file_conv build_file lazy
+# func_file_conv build_file unneeded_conversions
 # Convert a $build file to $host form and store it in $file
 # Currently only supports Windows hosts. If the determined conversion
-# type is listed in (the comma separated) LAZY, no conversion will
-# take place.
+# type is listed in (the comma separated) UNNEEDED_CONVERSIONS, no
+# conversion will take place.
 func_file_conv ()
 {
   file=$1
@@ -51,11 +51,22 @@
 	# lazily determine how to convert abs files
 	case `uname -s` in
 	  MINGW*)
-	    file_conv=mingw
+	    if test -n "$MSYSTEM" && (cygpath --version) >/dev/null 2>&1; then
+	      # MSYS2 environment.
+	      file_conv=cygwin
+	    else
+	      # Original MinGW environment.
+	      file_conv=mingw
+	    fi
 	    ;;
-	  CYGWIN* | MSYS*)
+	  MSYS*)
+	    # Old MSYS environment, or MSYS2 with 32-bit MSYS2 shell.
 	    file_conv=cygwin
 	    ;;
+	  CYGWIN*)
+	    # Cygwin environment.
+	    file_conv=cygwin
+	    ;;
 	  *)
 	    file_conv=wine
 	    ;;
@@ -63,12 +74,14 @@
       fi
       case $file_conv/,$2, in
 	*,$file_conv,*)
+	  # This is the optimization mentioned above:
+	  # If UNNEEDED_CONVERSIONS contains $file_conv, don't convert.
 	  ;;
 	mingw/*)
 	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
 	  ;;
-	cygwin/* | msys/*)
-	  file=`cygpath -m "$file" || echo "$file"`
+	cygwin/*)
+	  file=`cygpath -w "$file" || echo "$file"`
 	  ;;
 	wine/*)
 	  file=`winepath -w "$file" || echo "$file"`

Modified: branches/stable/source/src/build-aux/texinfo.tex
===================================================================
--- branches/stable/source/src/build-aux/texinfo.tex	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/build-aux/texinfo.tex	2025-02-15 16:07:47 UTC (rev 951)
@@ -3,9 +3,9 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2024-11-04.20}
+\def\texinfoversion{2025-01-31.21}
 %
-% Copyright 1985, 1986, 1988, 1990-2024 Free Software Foundation, Inc.
+% Copyright 1985, 1986, 1988, 1990-2025 Free Software Foundation, Inc.
 %
 % This texinfo.tex file is free software: you can redistribute it and/or
 % modify it under the terms of the GNU General Public License as
@@ -156,8 +156,9 @@
 % Give the space character the catcode for a space.
 \def\spaceisspace{\catcode`\ =10\relax}
 
-% Likewise for ^^M, the end of line character.
-\def\endlineisspace{\catcode13=10\relax}
+% Used to ignore an active newline that may appear immediately after
+% a macro name.
+{\catcode13=\active \gdef\ignoreactivenewline{\let^^M\empty}}
 
 \chardef\dashChar  = `\-
 \chardef\slashChar = `\/
@@ -957,6 +958,10 @@
   \ifx\byeerror\relax\else\errmessage{\byeerror}\fi
   \tracingstats=1\ptexend}
 
+% set in \donoderef below, but we need to define this here so that
+% conditionals balance inside the large \ifpdf ... \fi blocks below.
+\newif\ifnodeseen
+\nodeseenfalse
 
 \message{pdf,}
 % adobe `portable' document format
@@ -975,6 +980,11 @@
 \newif\ifpdf
 \newif\ifpdfmakepagedest
 
+\newif\ifluatex
+\ifx\luatexversion\thisisundefined\else
+  \luatextrue
+\fi
+
 %
 % For LuaTeX
 %
@@ -982,8 +992,7 @@
 \newif\iftxiuseunicodedestname
 \txiuseunicodedestnamefalse % For pdfTeX etc.
 
-\ifx\luatexversion\thisisundefined
-\else
+\ifluatex
   % Use Unicode destination names
   \txiuseunicodedestnametrue
   % Escape PDF strings with converting UTF-16 from UTF-8
@@ -1072,12 +1081,17 @@
   \fi
 \fi
 
+\newif\ifxetex
+\ifx\XeTeXrevision\thisisundefined\else
+  \xetextrue
+\fi
+
 \newif\ifpdforxetex
 \pdforxetexfalse
 \ifpdf
   \pdforxetextrue
 \fi
-\ifx\XeTeXrevision\thisisundefined\else
+\ifxetex
   \pdforxetextrue
 \fi
 
@@ -1167,58 +1181,90 @@
 be supported due to the design of the PDF format; use regular TeX (DVI
 output) for that.)}
 
+% definitions for pdftex or luatex with pdf output
 \ifpdf
+  % Strings in PDF outlines can either be ASCII, or encoded in UTF-16BE
+  % with BOM.  Unfortunately there is no simple way with pdftex to output
+  % UTF-16, so we have to do some quite convoluted expansion games if we
+  % find the string contains a non-ASCII codepoint if we want these to
+  % display correctly.  We generated the UTF-16 sequences in
+  % \DeclareUnicodeCharacter and we access them here.
   %
-  % Color manipulation macros using ideas from pdfcolor.tex,
-  % except using rgb instead of cmyk; the latter is said to render as a
-  % very dark gray on-screen and a very dark halftone in print, instead
-  % of actual black. The dark red here is dark enough to print on paper as
-  % nearly black, but still distinguishable for online viewing.  We use
-  % black by default, though.
-  \def\rgbDarkRed{0.50 0.09 0.12}
-  \def\rgbBlack{0 0 0}
+  \def\defpdfoutlinetextunicode#1{%
+    \def\pdfoutlinetext{#1}%
+    %
+    % Make UTF-8 sequences expand to UTF-16 definitions.
+    \passthroughcharsfalse \utfbytespdftrue
+    \utfviiidefinedwarningfalse
+    %
+    % Completely expand, eliminating any control sequences such as \code,
+    % leaving only possibly \utfbytes.
+    \let\utfbytes\relax
+    \pdfaccentliterals
+    \xdef\pdfoutlinetextchecked{#1}%
+    \checkutfbytes
+  }%
+  % Check if \utfbytes occurs in expansion.
+  \def\checkutfbytes{%
+    \expandafter\checkutfbytesz\pdfoutlinetextchecked\utfbytes\finish
+  }%
+  \def\checkutfbytesz#1\utfbytes#2\finish{%
+    \def\after{#2}%
+    \ifx\after\empty
+      % No further action needed.  Output ASCII string as-is, as converting
+      % to UTF-16 is somewhat slow (and uses more space).
+      \global\let\pdfoutlinetext\pdfoutlinetextchecked
+    \else
+      \passthroughcharstrue % pass UTF-8 sequences unaltered
+      \xdef\pdfoutlinetext{\pdfoutlinetext}%
+      \expandafter\expandutfsixteen\expandafter{\pdfoutlinetext}\pdfoutlinetext
+    \fi
+  }%
   %
-  % rg sets the color for filling (usual text, etc.);
-  % RG sets the color for stroking (thin rules, e.g., normal _'s).
-  \def\pdfsetcolor#1{\pdfliteral{#1 rg  #1 RG}}
+  \catcode2=1 % begin-group character
+  \catcode3=2 % end-group character
   %
-  % Set color, and create a mark which defines \thiscolor accordingly,
-  % so that \makeheadline knows which color to restore.
-  \def\curcolor{0 0 0}%
-  \def\setcolor#1{%
-    \ifx#1\curcolor\else
-      \xdef\currentcolordefs{\gdef\noexpand\thiscolor{#1}}%
-      \domark
-      \pdfsetcolor{#1}%
-      \xdef\curcolor{#1}%
-    \fi
-  }
+  % argument should be pure UTF-8 with no control sequences.  convert to
+  % UTF-16BE by inserting null bytes before bytes < 128 and expanding
+  % UTF-8 multibyte sequences to saved UTF-16BE sequences.
+  \def\expandutfsixteen#1#2{%
+    \bgroup \asciitounicode
+    \passthroughcharsfalse
+    \let\utfbytes\asis
+    %
+    % for Byte Order Mark (BOM)
+    \catcode"FE=12
+    \catcode"FF=12
+    %
+    % we want to treat { and } in #1 as any other ASCII bytes.  however,
+    % we need grouping characters for \scantokens and definitions/assignments,
+    % so define alternative grouping characters using control characters
+    % that are unlikely to occur.
+    % this does not affect 0x02 or 0x03 bytes arising from expansion as
+    % these are tokens with different catcodes.
+    \catcode"02=1 % begin-group character
+    \catcode"03=2 % end-group character
+    %
+    \expandafter\xdef\expandafter#2\scantokens{%
+      ^^02^^fe^^ff#1^^03}%
+    % NB we need \scantokens to provide both the open and close group tokens
+    % for \xdef otherwise there is an e-TeX error "File ended while
+    % scanning definition of..."
+    % NB \scantokens is a e-TeX command which is assumed to be provided by
+    % pdfTeX.
+    %
+    \egroup
+  }%
   %
-  \let\maincolor\rgbBlack
-  \pdfsetcolor{\maincolor}
-  \edef\thiscolor{\maincolor}
-  \def\currentcolordefs{}
+  \catcode2=12 \catcode3=12 % defaults
   %
-  \def\makefootline{%
-    \baselineskip24pt
-    \line{\pdfsetcolor{\maincolor}\the\footline}%
-  }
+  % Color support
   %
-  \def\makeheadline{%
-    \vbox to 0pt{%
-      \vskip-22.5pt
-      \line{%
-        \vbox to8.5pt{}%
-        % Extract \thiscolor definition from the marks.
-        \getcolormarks
-        % Typeset the headline with \maincolor, then restore the color.
-        \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
-      }%
-      \vss
-    }%
-    \nointerlineskip
-  }
+  % rg sets the color for filling (usual text, etc.);
+  % RG sets the color for stroking (thin rules, e.g., normal _'s).
+  \def\pdfsetcolor#1{\pdfliteral{#1 rg  #1 RG}}
   %
+  % PDF outline support
   %
   \pdfcatalog{/PageMode /UseOutlines}
   %
@@ -1315,18 +1361,15 @@
       \def\pdfoutlinetext{#1}%
     \else
       \ifx \declaredencoding \utfeight
-        \ifx\luatexversion\thisisundefined
-          % For pdfTeX  with UTF-8.
-          % TODO: the PDF format can use UTF-16 in bookmark strings,
-          % but the code for this isn't done yet.
-          % Use ASCII approximations.
-          \passthroughcharsfalse
-          \def\pdfoutlinetext{#1}%
-        \else
+        \ifluatex
           % For LuaTeX with UTF-8.
           % Pass through Unicode characters for title texts.
           \passthroughcharstrue
-          \def\pdfoutlinetext{#1}%
+          \pdfaccentliterals
+          \xdef\pdfoutlinetext{#1}%
+        \else
+          % For pdfTeX with UTF-8.
+          \defpdfoutlinetextunicode{#1}%
         \fi
       \else
         % For non-Latin-1 or non-UTF-8 encodings.
@@ -1348,11 +1391,6 @@
   % used to mark target names; must be expandable.
   \def\pdfmkpgn#1{#1}
   %
-  % by default, use black for everything.
-  \def\urlcolor{\rgbBlack}
-  \let\linkcolor\rgbBlack
-  \def\endlink{\setcolor{\maincolor}\pdfendlink}
-  %
   % Adding outlines to PDF; macros for calculating structure of outlines
   % come from Petr Olsak
   \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
@@ -1416,6 +1454,10 @@
       \def\unnsecentry{\numsecentry}%
       \def\unnsubsecentry{\numsubsecentry}%
       \def\unnsubsubsecentry{\numsubsubsecentry}%
+      %
+      % Treat index initials like @section.  Note that this is the wrong
+      % level if the index is not at the level of @appendix or @chapter.
+      \def\idxinitialentry{\numsecentry}%
       \readdatafile{toc}%
       %
       % Read toc second time, this time actually producing the outlines.
@@ -1437,6 +1479,8 @@
         \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
       \def\numsubsubsecentry##1##2##3##4{% count is always zero
         \dopdfoutline{##1}{}{##3}{##4}}%
+      \def\idxinitialentry##1##2##3##4{%
+        \dopdfoutline{##1}{}{idx.##1.##2}{##4}}%
       %
       % PDF outlines are displayed using system fonts, instead of
       % document fonts.  Therefore we cannot use special characters,
@@ -1450,6 +1494,7 @@
       % we use for the index sort strings.
       %
       \indexnofonts
+      \ifnodeseen\else \dopdfoutlinecontents \fi % for @contents at beginning
       \setupdatafile
       % We can have normal brace characters in the PDF outlines, unlike
       % Texinfo index files.  So set that up.
@@ -1458,7 +1503,11 @@
       \catcode`\\=\active \otherbackslash
       \input \tocreadfilename
     \endgroup
+    \ifnodeseen \dopdfoutlinecontents \fi % for @contents at end
   }
+  \def\dopdfoutlinecontents{%
+    \expandafter\dopdfoutline\expandafter{\putwordTOC}{}{txi.CONTENTS}{}%
+  }
   {\catcode`[=1 \catcode`]=2
    \catcode`{=\other \catcode`}=\other
    \gdef\lbracecharliteral[{]%
@@ -1484,55 +1533,16 @@
   \else
     \let \startlink \pdfstartlink
   \fi
-  % make a live url in pdf output.
-  \def\pdfurl#1{%
-    \begingroup
-      % it seems we really need yet another set of dummies; have not
-      % tried to figure out what each command should do in the context
-      % of @url.  for now, just make @/ a no-op, that's the only one
-      % people have actually reported a problem with.
-      %
-      \normalturnoffactive
-      \def\@{@}%
-      \let\/=\empty
-      \makevalueexpandable
-      % do we want to go so far as to use \indexnofonts instead of just
-      % special-casing \var here?
-      \def\var##1{##1}%
-      %
-      \leavevmode\setcolor{\urlcolor}%
-      \startlink attr{/Border [0 0 0]}%
-        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
-    \endgroup}
-  % \pdfgettoks - Surround page numbers in #1 with @pdflink.  #1 may
-  % be a simple number, or a list of numbers in the case of an index
-  % entry.
-  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
-  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
-  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
-  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
-  \def\maketoks{%
-    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
-    \ifx\first0\adn0
-    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
-    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
-    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
-    \else
-      \ifnum0=\countA\else\makelink\fi
-      \ifx\first.\let\next=\done\else
-        \let\next=\maketoks
-        \addtokens{\toksB}{\the\toksD}
-        \ifx\first,\addtokens{\toksB}{\space}\fi
-      \fi
-    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
-    \next}
-  \def\makelink{\addtokens{\toksB}%
-    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+  \def\pdfmakeurl#1{%
+    \startlink attr{/Border [0 0 0]}%
+      user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+  }%
+  \def\endlink{\setcolor{\maincolor}\pdfendlink}
+  %
   \def\pdflink#1{\pdflinkpage{#1}{#1}}%
   \def\pdflinkpage#1#2{%
     \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
     \setcolor{\linkcolor}#2\endlink}
-  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
 \else
   % non-pdf mode
   \let\pdfmkdest = \gobble
@@ -1541,13 +1551,12 @@
   \let\setcolor = \gobble
   \let\pdfsetcolor = \gobble
   \let\pdfmakeoutlines = \relax
-\fi  % \ifx\pdfoutput
+\fi
 
 %
 % For XeTeX
 %
-\ifx\XeTeXrevision\thisisundefined
-\else
+\ifxetex
   %
   % XeTeX version check
   %
@@ -1573,45 +1582,8 @@
   \fi
   %
   % Color support
-  %
-  \def\rgbDarkRed{0.50 0.09 0.12}
-  \def\rgbBlack{0 0 0}
-  %
   \def\pdfsetcolor#1{\special{pdf:scolor [#1]}}
   %
-  % Set color, and create a mark which defines \thiscolor accordingly,
-  % so that \makeheadline knows which color to restore.
-  \def\setcolor#1{%
-    \xdef\currentcolordefs{\gdef\noexpand\thiscolor{#1}}%
-    \domark
-    \pdfsetcolor{#1}%
-  }
-  %
-  \def\maincolor{\rgbBlack}
-  \pdfsetcolor{\maincolor}
-  \edef\thiscolor{\maincolor}
-  \def\currentcolordefs{}
-  %
-  \def\makefootline{%
-    \baselineskip24pt
-    \line{\pdfsetcolor{\maincolor}\the\footline}%
-  }
-  %
-  \def\makeheadline{%
-    \vbox to 0pt{%
-      \vskip-22.5pt
-      \line{%
-        \vbox to8.5pt{}%
-        % Extract \thiscolor definition from the marks.
-        \getcolormarks
-        % Typeset the headline with \maincolor, then restore the color.
-        \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
-      }%
-      \vss
-    }%
-    \nointerlineskip
-  }
-  %
   % PDF outline support
   %
   % Emulate pdfTeX primitive
@@ -1649,11 +1621,6 @@
     \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
   }
   %
-  % by default, use black for everything.
-  \def\urlcolor{\rgbBlack}
-  \def\linkcolor{\rgbBlack}
-  \def\endlink{\setcolor{\maincolor}\pdfendlink}
-  %
   \def\dopdfoutline#1#2#3#4{%
     \setpdfoutlinetext{#1}
     \setpdfdestname{#3}
@@ -1667,7 +1634,6 @@
   %
   \def\pdfmakeoutlines{%
     \begingroup
-      %
       % For XeTeX, counts of subentries are not necessary.
       % Therefore, we read toc only once.
       %
@@ -1686,6 +1652,11 @@
       \def\numsubsubsecentry##1##2##3##4{%
         \dopdfoutline{##1}{4}{##3}{##4}}%
       %
+      % Note this is at the wrong level unless the index is in an @appendix
+      % or @chapter.
+      \def\idxinitialentry##1##2##3##4{%
+         \dopdfoutline{##1}{2}{idx.##1.##2}{##4}}%
+      %
       \let\appentry\numchapentry%
       \let\appsecentry\numsecentry%
       \let\appsubsecentry\numsubsecentry%
@@ -1700,6 +1671,9 @@
       % Therefore, the encoding and the language may not be considered.
       %
       \indexnofonts
+      \pdfaccentliterals
+      \ifnodeseen\else \dopdfoutlinecontents \fi % for @contents at beginning
+      %
       \setupdatafile
       % We can have normal brace characters in the PDF outlines, unlike
       % Texinfo index files.  So set that up.
@@ -1706,9 +1680,14 @@
       \def\{{\lbracecharliteral}%
       \def\}{\rbracecharliteral}%
       \catcode`\\=\active \otherbackslash
-      \input \tocreadfilename
+      \input \tocreadfilename\relax
+      \ifnodeseen \dopdfoutlinecontents \fi % for @contents at end
     \endgroup
   }
+  \def\dopdfoutlinecontents{%
+    \expandafter\dopdfoutline\expandafter
+      {\putwordTOC}{1}{txi.CONTENTS}{txi.CONTENTS}%
+  }
   {\catcode`[=1 \catcode`]=2
    \catcode`{=\other \catcode`}=\other
    \gdef\lbracecharliteral[{]%
@@ -1721,7 +1700,7 @@
   % However, due to a UTF-16 conversion issue of xdvipdfmx 20150315,
   % ``\special{pdf:dest ...}'' cannot handle non-ASCII strings.
   % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
-%
+  %
   \def\skipspaces#1{\def\PP{#1}\def\D{|}%
     \ifx\PP\D\let\nextsp\relax
     \else\let\nextsp\skipspaces
@@ -1736,56 +1715,18 @@
     \edef\temp{#1}%
     \expandafter\skipspaces\temp|\relax
   }
-  % make a live url in pdf output.
-  \def\pdfurl#1{%
-    \begingroup
-      % it seems we really need yet another set of dummies; have not
-      % tried to figure out what each command should do in the context
-      % of @url.  for now, just make @/ a no-op, that's the only one
-      % people have actually reported a problem with.
-      %
-      \normalturnoffactive
-      \def\@{@}%
-      \let\/=\empty
-      \makevalueexpandable
-      % do we want to go so far as to use \indexnofonts instead of just
-      % special-casing \var here?
-      \def\var##1{##1}%
-      %
-      \leavevmode\setcolor{\urlcolor}%
-      \special{pdf:bann << /Border [0 0 0]
-        /Subtype /Link /A << /S /URI /URI (#1) >> >>}%
-    \endgroup}
+  \def\pdfmakeurl#1{%
+    \special{pdf:bann << /Border [0 0 0]
+      /Subtype /Link /A << /S /URI /URI (#1) >> >>}%
+  }
   \def\endlink{\setcolor{\maincolor}\special{pdf:eann}}
-  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
-  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
-  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
-  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
-  \def\maketoks{%
-    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
-    \ifx\first0\adn0
-    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
-    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
-    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
-    \else
-      \ifnum0=\countA\else\makelink\fi
-      \ifx\first.\let\next=\done\else
-        \let\next=\maketoks
-        \addtokens{\toksB}{\the\toksD}
-        \ifx\first,\addtokens{\toksB}{\space}\fi
-      \fi
-    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
-    \next}
-  \def\makelink{\addtokens{\toksB}%
-    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
   \def\pdflink#1{\pdflinkpage{#1}{#1}}%
   \def\pdflinkpage#1#2{%
     \special{pdf:bann << /Border [0 0 0]
       /Type /Annot /Subtype /Link /A << /S /GoTo /D (#1) >> >>}%
     \setcolor{\linkcolor}#2\endlink}
-  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
-%
   %
+  %
   % @image support
   %
   % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
@@ -1841,7 +1782,165 @@
   }
 \fi
 
+% common definitions and code for pdftex, luatex and xetex
+\ifpdforxetex
+  % The dark red here is dark enough to print on paper as
+  % nearly black, but still distinguishable for online viewing.  We use
+  % black by default, though.
+  \def\rgbDarkRed{0.50 0.09 0.12}
+  \def\rgbBlack{0 0 0}
+  %
+  % Set color, and create a mark which defines \thiscolor accordingly,
+  % so that \makeheadline knows which color to restore.
+  \def\curcolor{0 0 0}%
+  \def\setcolor#1{%
+    \ifx#1\curcolor\else
+      \xdef\currentcolordefs{\gdef\noexpand\thiscolor{#1}}%
+      \domark
+      \pdfsetcolor{#1}%
+      \xdef\curcolor{#1}%
+    \fi
+  }
+  %
+  \let\maincolor\rgbBlack
+  \pdfsetcolor{\maincolor}
+  \edef\thiscolor{\maincolor}
+  \def\currentcolordefs{}
+  %
+  \def\makefootline{%
+    \baselineskip24pt
+    \line{\pdfsetcolor{\maincolor}\the\footline}%
+  }
+  %
+  \def\makeheadline{%
+    \vbox to 0pt{%
+      \vskip-22.5pt
+      \line{%
+        \vbox to8.5pt{}%
+        % Extract \thiscolor definition from the marks.
+        \getcolormarks
+        % Typeset the headline with \maincolor, then restore the color.
+        \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
+      }%
+      \vss
+    }%
+    \nointerlineskip
+  }
+  %
+  % by default, use black for everything.
+  \def\urlcolor{\rgbBlack}
+  \let\linkcolor\rgbBlack
+  %
+  % make a live url in pdf output.
+  \def\pdfurl#1{%
+    \begingroup
+      % it seems we really need yet another set of dummies; have not
+      % tried to figure out what each command should do in the context
+      % of @url.  for now, just make @/ a no-op, that's the only one
+      % people have actually reported a problem with.
+      %
+      \normalturnoffactive
+      \def\@{@}%
+      \let\/=\empty
+      \makevalueexpandable
+      % do we want to go so far as to use \indexnofonts instead of just
+      % special-casing \var here?
+      \def\var##1{##1}%
+      %
+      \leavevmode\setcolor{\urlcolor}%
+      \pdfmakeurl{#1}%
+    \endgroup}
+  %
+  % \pdfgettoks - Surround page numbers in #1 with @pdflink.  #1 may
+  % be a simple number, or a list of numbers in the case of an index
+  % entry.
+  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
+  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
+  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
+  \def\maketoks{%
+    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
+    \ifx\first0\adn0
+    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
+    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
+    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+    \else
+      \ifnum0=\countA\else\makelink\fi
+      \ifx\first.\let\next=\done\else
+        \let\next=\maketoks
+        \addtokens{\toksB}{\the\toksD}
+        \ifx\first,\addtokens{\toksB}{\space}\fi
+      \fi
+    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+    \next}
+  \def\makelink{\addtokens{\toksB}%
+    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\fi
 
+\ifpdforxetex
+  % for pdftex.
+  {\catcode`^^cc=13
+  \gdef\pdfaccentliteralsutfviii{%
+    % For PDF outline only.  Unicode combining accents follow the
+    % character they modify.  Note we need at least the first byte
+    % of the UTF-8 sequences to have an active catcode to allow the
+    % definitions to do their magic.
+    \def\"##1{##1^^cc^^88}%           U+0308
+    \def\'##1{##1^^cc^^81}%           U+0301
+    \def\,##1{##1^^cc^^a7}%           U+0327
+    \def\=##1{##1^^cc^^85}%           U+0305
+    \def\^##1{##1^^cc^^82}%           U+0302
+    \def\`##1{##1^^cc^^80}%           U+0300
+    \def\~##1{##1^^cc^^83}%           U+0303
+    \def\dotaccent##1{##1^^cc^^87}%   U+0307
+    \def\H##1{##1^^cc^^8b}%           U+030B
+    \def\ogonek##1{##1^^cc^^a8}%      U+0328
+    \def\ringaccent##1{##1^^cc^^8a}%  U+030A
+    \def\u##1{##1^^cc^^8c}%           U+0306
+    \def\ubaraccent##1{##1^^cc^^b1}%  U+0331
+    \def\udotaccent##1{##1^^cc^^a3}%  U+0323
+    \def\v##1{##1^^cc^^8c}%           U+030C
+    % this definition of @tieaccent will only work with exactly two characters
+    % in argument as we need to insert the combining character between them.
+    \def\tieaccent##1{\tieaccentz##1}%
+    \def\tieaccentz##1##2{##1^^cd^^a1##2} % U+0361
+  }}%
+  %
+  % for xetex and luatex, which both support extended ^^^^ escapes and
+  % process the Unicode codepoint as a single token.
+  \gdef\pdfaccentliteralsnative{%
+    \def\"##1{##1^^^^0308}%
+    \def\'##1{##1^^^^0301}%
+    \def\,##1{##1^^^^0327}%
+    \def\=##1{##1^^^^0305}%
+    \def\^##1{##1^^^^0302}%
+    \def\`##1{##1^^^^0300}%
+    \def\~##1{##1^^^^0303}%
+    \def\dotaccent##1{##1^^^^0307}%
+    \def\H##1{##1^^^^030b}%
+    \def\ogonek##1{##1^^^^0328}%
+    \def\ringaccent##1{##1^^^^030a}%
+    \def\u##1{##1^^^^0306}%
+    \def\ubaraccent##1{##1^^^^0331}%
+    \def\udotaccent##1{##1^^^^0323}%
+    \def\v##1{##1^^^^030c}%
+    \def\tieaccent##1{\tieaccentz##1}%
+    \def\tieaccentz##1##2{##1^^^^0361##2} % U+0361
+  }%
+  %
+  % use the appropriate definition
+  \ifluatex
+    \let\pdfaccentliterals\pdfaccentliteralsnative
+  \else
+    \ifxetex
+      \let\pdfaccentliterals\pdfaccentliteralsnative
+    \else
+      \let\pdfaccentliterals\pdfaccentliteralsutfviii
+    \fi
+  \fi
+\fi
+
 %
 \message{fonts,}
 
@@ -2772,15 +2871,15 @@
 % @cite unconditionally uses \sl with \smartitaliccorrection.
 \def\cite#1{{\sl #1}\smartitaliccorrection}
 
-% @var unconditionally uses \sl.  This gives consistency for
-% parameter names whether they are in @def, @table @code or a
-% regular paragraph.
-%  To get ttsl font for @var when used in code context, @set txicodevaristt.
-% The \null is to reset \spacefactor.
+% By default, use ttsl font for @var when used in code context.
+% To unconditionally use \sl for @var, @clear txicodevaristt.  This
+% gives consistency for parameter names whether they are in @def,
+% @table @code or a regular paragraph.
 \def\aftersmartic{}
 \def\var#1{%
   \let\saveaftersmartic = \aftersmartic
   \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
+  % The \null is to reset \spacefactor.
   %
   \ifflagclear{txicodevaristt}%
     {\def\varnext{{{\sl #1}}\smartitaliccorrection}}%
@@ -2788,7 +2887,6 @@
   \varnext
 }
 
-% To be removed after next release
 \def\SETtxicodevaristt{}% @set txicodevaristt
 
 \let\i=\smartitalic
@@ -2808,7 +2906,7 @@
 \def\ii#1{{\it #1}}             % italic font
 
 % @b, explicit bold.  Also @strong.
-\def\b#1{{\bf #1}}
+\def\b#1{{\bf \defcharsdefault #1}}
 \let\strong=\b
 
 % @sansserif, explicit sans.
@@ -3039,9 +3137,7 @@
           \unhbox0\ (\urefcode{#1})%
         \fi
       \else
-        \ifx\XeTeXrevision\thisisundefined
-          \unhbox0\ (\urefcode{#1})% DVI, always show arg and url
-        \else
+        \ifxetex
           % For XeTeX
           \ifurefurlonlylink
             % PDF plus option to not display url, show just arg
@@ -3051,6 +3147,8 @@
             % visibility, if the pdf is eventually used to print, etc.
             \unhbox0\ (\urefcode{#1})%
           \fi
+        \else
+          \unhbox0\ (\urefcode{#1})% DVI, always show arg and url
         \fi
       \fi
     \else
@@ -3670,15 +3768,24 @@
      {\font\thisecfont = #1ctt\ecsize \space at \nominalsize}%
   % else
      {\ifx\curfontstyle\bfstylename
-        % bold:
-        \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize
+        \etcfontbold{#1}%
       \else
-        % regular:
-        \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+        \ifrmisbold
+          \etcfontbold{#1}%
+        \else
+          % regular:
+          \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space
+            at \nominalsize
+        \fi
       \fi}%
   \thisecfont
 }
 
+\def\etcfontbold#1{%
+  % bold:
+  \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize
+}
+
 % @registeredsymbol - R in a circle.  The font for the R should really
 % be smaller yet, but lllsize is the best we can do for now.
 % Adapted from the plain.tex definition of \copyright.
@@ -5528,7 +5635,6 @@
 
 \def\initial{%
   \bgroup
-  \initialglyphs
   \initialx
 }
 
@@ -5551,7 +5657,10 @@
   %
   % No shrink because it confuses \balancecolumns.
   \vskip 1.67\baselineskip plus 1\baselineskip
-  \leftline{\secfonts \kern-0.05em \secbf #1}%
+  \doindexinitialentry{#1}%
+  \initialglyphs
+  \leftline{%
+    \secfonts \kern-0.05em \secbf #1}%
   % \secfonts is inside the argument of \leftline so that the change of
   % \baselineskip will not affect any glue inserted before the vbox that
   % \leftline creates.
@@ -5561,6 +5670,32 @@
   \egroup % \initialglyphs
 }
 
+\def\doindexinitialentry#1{%
+  \ifpdforxetex
+    \global\advance\idxinitialno by 1
+    \def\indexlbrace{\{}
+    \def\indexrbrace{\}}
+    \def\indexbackslash{\realbackslash}
+    \def\indexatchar{\@}
+    \writetocentry{idxinitial}{\asis #1}{IDX\the\idxinitialno}%
+    % The @asis removes a pair of braces around e.g. {@indexatchar} that
+    % are output by texindex.
+    %
+    \vbox to 0pt{}%
+    % This vbox fixes the \pdfdest location for double column formatting.
+    % Without it, the \pdfdest is output above topskip glue at the top
+    % of a column as this glue is not added until the first box.
+    \pdfmkdest{idx.\asis #1.IDX\the\idxinitialno}%
+  \fi
+}
+
+% No listing in TOC
+\def\idxinitialentry#1#2#3#4{}
+
+% For index initials.
+\newcount\idxinitialno \idxinitialno=1
+
+
 \newdimen\entryrightmargin
 \entryrightmargin=0pt
 
@@ -6782,12 +6917,13 @@
 
 % Prepare to read what we've written to \tocfile.
 %
-\def\startcontents#1{%
+\def\startcontents#1#2{%
   % If @setchapternewpage on, and @headings double, the contents should
   % start on an odd page, unlike chapters.
   \contentsalignmacro
   \immediate\closeout\tocfile
   %
+  #2%
   % Don't need to put `Contents' or `Short Contents' in the headline.
   % It is abundantly clear what they are.
   \chapmacro{#1}{Yomitfromtoc}{}%
@@ -6818,7 +6954,7 @@
 % Normal (long) toc.
 %
 \def\contents{%
-  \startcontents{\putwordTOC}%
+  \startcontents{\putwordTOC}{\contentsmkdest}%
     \openin 1 \tocreadfilename\space
     \ifeof 1 \else
       \findsecnowidths
@@ -6834,9 +6970,13 @@
   \contentsendroman
 }
 
+\def\contentsmkdest{%
+  \pdfmkdest{txi.CONTENTS}%
+}
+
 % And just the chapters.
 \def\summarycontents{%
-  \startcontents{\putwordShortTOC}%
+  \startcontents{\putwordShortTOC}{}%
     %
     \let\partentry = \shortpartentry
     \let\numchapentry = \shortchapentry
@@ -7925,7 +8065,7 @@
     {\rm\enskip}% hskip 0.5 em of \rmfont
   }{}%
   %
-  \boldbrax
+  \parenbrackglyphs
   % arguments will be output next, if any.
 }
 
@@ -7935,7 +8075,10 @@
     \def\^^M{}% for line continuation
     \df \ifdoingtypefn \tt \else \sl \fi
     \ifflagclear{txicodevaristt}{}%
-       {\def\var##1{{\setregularquotes \ttsl ##1}}}%
+       % use \ttsl for @var in both @def* and @deftype*.
+       % the kern prevents an italic correction at end, which appears
+       % too much for ttsl.
+       {\def\var##1{{\setregularquotes \ttsl ##1\kern 0pt }}}%
     #1%
   \egroup
 }
@@ -7952,8 +8095,9 @@
 \let\lparen = ( \let\rparen = )
 
 % Be sure that we always have a definition for `(', etc.  For example,
-% if the fn name has parens in it, \boldbrax will not be in effect yet,
-% so TeX would otherwise complain about undefined control sequence.
+% if the fn name has parens in it, \parenbrackglyphs will not be in
+% effect yet, so TeX would otherwise complain about undefined control
+% sequence.
 {
   \activeparens
   \gdef\defcharsdefault{%
@@ -7963,49 +8107,28 @@
   }
   \globaldefs=1 \defcharsdefault
 
-  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+  \gdef\parenbrackglyphs{\let(=\opnr\let)=\cpnr\let[=\lbrb\let]=\rbrb}
   \gdef\magicamp{\let&=\amprm}
 }
 \let\ampchar\&
 
+\def\amprm#1 {{\rm\&#1 }}
+
 \newcount\parencount
-
-% If we encounter &foo, then turn on ()-hacking afterwards
-\newif\ifampseen
-\def\amprm#1 {\ampseentrue{\rm\&#1 }}
-
-\def\parenfont{%
-  \ifampseen
-    % At the first level, print parens in roman,
-    % otherwise use the default font.
-    \ifnum \parencount=1 \rm \fi
-  \else
-    % The \sf parens (in \boldbrax) actually are a little bolder than
-    % the contained text.  This is especially needed for [ and ] .
-    \sf
-  \fi
-}
-\def\infirstlevel#1{%
-  \ifampseen
-    \ifnum\parencount=1
-      #1%
-    \fi
-  \fi
-}
-\def\bfafterword#1 {#1 \bf}
-
+% opening and closing parentheses in roman font
 \def\opnr{%
+  \ptexslash % italic correction
   \global\advance\parencount by 1
-  {\parenfont(}%
-  \infirstlevel \bfafterword
+  {\sf(}%
 }
-\def\clnr{%
-  {\parenfont)}%
-  \infirstlevel \sl
+\def\cpnr{%
+  \ptexslash % italic correction
+  {\sf)}%
   \global\advance\parencount by -1
 }
 
 \newcount\brackcount
+% left and right square brackets in bold font
 \def\lbrb{%
   \global\advance\brackcount by 1
   {\bf[}%
@@ -8535,7 +8658,7 @@
     \expandafter\xdef\csname\the\macname\endcsname{%
       \begingroup
         \noexpand\spaceisspace
-        \noexpand\endlineisspace
+        \noexpand\ignoreactivenewline
         \noexpand\expandafter % skip any whitespace after the macro name.
         \expandafter\noexpand\csname\the\macname @@@\endcsname}%
     \expandafter\xdef\csname\the\macname @@@\endcsname{%
@@ -8836,8 +8959,13 @@
   \ifx\lastnode\empty\else
     \setref{\lastnode}{#1}%
     \global\let\lastnode=\empty
+    \setnodeseenonce
   \fi
 }
+\def\setnodeseenonce{
+  \global\nodeseentrue
+  \let\setnodeseenonce\relax
+}
 
 % @nodedescription, @nodedescriptionblock - do nothing for TeX
 \parseargdef\nodedescription{}
@@ -9575,7 +9703,9 @@
     % For pdfTeX and LuaTeX <= 0.80
     \dopdfimage{#1}{#2}{#3}%
   \else
-    \ifx\XeTeXrevision\thisisundefined
+    \ifxetex
+      \doxeteximage{#1}{#2}{#3}%
+    \else
       % For epsf.tex
       % \epsfbox itself resets \epsf?size at each figure.
       \setbox0 = \hbox{\ignorespaces #2}%
@@ -9583,9 +9713,6 @@
       \setbox0 = \hbox{\ignorespaces #3}%
         \ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
       \epsfbox{#1.eps}%
-    \else
-      % For XeTeX
-      \doxeteximage{#1}{#2}{#3}%
     \fi
   \fi
   %
@@ -9931,17 +10058,17 @@
 \newif\iftxinativeunicodecapable
 \newif\iftxiusebytewiseio
 
-\ifx\XeTeXrevision\thisisundefined
-  \ifx\luatexversion\thisisundefined
+\ifxetex
+  \txinativeunicodecapabletrue
+  \txiusebytewiseiofalse
+\else
+  \ifluatex
+    \txinativeunicodecapabletrue
+    \txiusebytewiseiofalse
+  \else
     \txinativeunicodecapablefalse
     \txiusebytewiseiotrue
-  \else
-    \txinativeunicodecapabletrue
-    \txiusebytewiseiofalse
   \fi
-\else
-  \txinativeunicodecapabletrue
-  \txiusebytewiseiofalse
 \fi
 
 % Set I/O by bytes instead of UTF-8 sequence for XeTeX and LuaTex
@@ -9948,8 +10075,7 @@
 % for non-UTF-8 (byte-wise) encodings.
 %
 \def\setbytewiseio{%
-  \ifx\XeTeXrevision\thisisundefined
-  \else
+  \ifxetex
     \XeTeXdefaultencoding "bytes"  % For subsequent files to be read
     \XeTeXinputencoding "bytes"  % For document root file
     % Unfortunately, there seems to be no corresponding XeTeX command for
@@ -9958,8 +10084,7 @@
     % place of non-ASCII characters.
   \fi
 
-  \ifx\luatexversion\thisisundefined
-  \else
+  \ifluatex
     \directlua{
     local utf8_char, byte, gsub = unicode.utf8.char, string.byte, string.gsub
     local function convert_char (char)
@@ -10068,8 +10193,7 @@
   \fi % lattwo
   \fi % ascii
   %
-  \ifx\XeTeXrevision\thisisundefined
-  \else
+  \ifxetex
     \ifx \declaredencoding \utfeight
     \else
       \ifx \declaredencoding \ascii
@@ -10352,11 +10476,15 @@
 
 \gdef\UTFviiiDefined#1{%
   \ifx #1\relax
-    \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+    \ifutfviiidefinedwarning
+      \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+    \fi
   \else
     \expandafter #1%
   \fi
 }
+\newif\ifutfviiidefinedwarning
+\utfviiidefinedwarningtrue
 
 % Give non-ASCII bytes the active definitions for processing UTF-8 sequences
 \begingroup
@@ -10366,8 +10494,8 @@
 
   % Loop from \countUTFx to \countUTFy, performing \UTFviiiTmp
   % substituting ~ and $ with a character token of that value.
-  \def\UTFviiiLoop{%
-    \global\catcode\countUTFx\active
+  \gdef\UTFviiiLoop{%
+    \catcode\countUTFx\active
     \uccode`\~\countUTFx
     \uccode`\$\countUTFx
     \uppercase\expandafter{\UTFviiiTmp}%
@@ -10375,7 +10503,7 @@
     \ifnum\countUTFx < \countUTFy
       \expandafter\UTFviiiLoop
     \fi}
-
+  %
   % For bytes other than the first in a UTF-8 sequence.  Not expected to
   % be expanded except when writing to auxiliary files.
   \countUTFx = "80
@@ -10409,6 +10537,16 @@
         \else\expandafter\UTFviiiFourOctets\expandafter$\fi
         }}%
   \UTFviiiLoop
+  %
+  % for pdftex only, used to expand ASCII to UTF-16BE.
+  \gdef\asciitounicode{%
+    \countUTFx = "20
+    \countUTFy = "80
+    \def\UTFviiiTmp{%
+      \def~{\nullbyte $}}%
+    \UTFviiiLoop
+  }
+  {\catcode0=11 \gdef\nullbyte{^^00}}%
 \endgroup
 
 \def\globallet{\global\let} % save some \expandafter's below
@@ -10433,8 +10571,8 @@
   \fi
 }
 
-% These macros are used here to construct the name of a control
-% sequence to be defined.
+% These macros are used here to construct the names of macros
+% that expand to the definitions for UTF-8 sequences.
 \def\UTFviiiTwoOctetsName#1#2{%
   \csname u8:#1\string #2\endcsname}%
 \def\UTFviiiThreeOctetsName#1#2#3{%
@@ -10442,6 +10580,35 @@
 \def\UTFviiiFourOctetsName#1#2#3#4{%
   \csname u8:#1\string #2\string #3\string #4\endcsname}%
 
+% generate UTF-16 from codepoint
+\def\utfsixteentotoks#1#2{%
+  \countUTFz = "#2\relax
+  \ifnum \countUTFz > 65535
+    % doesn't work for codepoints > U+FFFF
+    % we don't define glyphs for any of these anyway, so it doesn't matter
+    #1={U+#2}%
+  \else
+    \countUTFx = \countUTFz
+    \divide\countUTFx by 256
+    \countUTFy = \countUTFx
+    \multiply\countUTFx by 256
+    \advance\countUTFz by -\countUTFx
+    \uccode`,=\countUTFy
+    \uccode`;=\countUTFz
+    \ifnum\countUTFy = 0
+      \uppercase{#1={\nullbyte\string;}}%
+    \else\ifnum\countUTFz = 0
+      \uppercase{#1={\string,\nullbyte}}%
+    \else
+      \uppercase{#1={\string,\string;}}%
+    \fi\fi
+    % NB \uppercase cannot insert a null byte
+  \fi
+}
+
+\newif\ifutfbytespdf
+\utfbytespdffalse
+
 % For UTF-8 byte sequences (TeX, e-TeX and pdfTeX),
 % provide a definition macro to replace a Unicode character;
 % this gets used by the @U command
@@ -10458,18 +10625,22 @@
     \countUTFz = "#1\relax
     \begingroup
       \parseXMLCharref
-
-      % Give \u8:... its definition.  The sequence of seven \expandafter's
-      % expands after the \gdef three times, e.g.
       %
+      % Completely expand \UTFviiiTmp, which looks like:
       % 1.  \UTFviiTwoOctetsName B1 B2
       % 2.  \csname u8:B1 \string B2 \endcsname
       % 3.  \u8: B1 B2  (a single control sequence token)
+      \xdef\UTFviiiTmp{\UTFviiiTmp}%
       %
-      \expandafter\expandafter
-      \expandafter\expandafter
-      \expandafter\expandafter
-      \expandafter\gdef       \UTFviiiTmp{#2}%
+      \ifpdf
+        \toksA={#2}%
+        \utfsixteentotoks\toksB{#1}%
+        \expandafter\xdef\UTFviiiTmp{%
+          \noexpand\ifutfbytespdf\noexpand\utfbytes{\the\toksB}%
+          \noexpand\else\the\toksA\noexpand\fi}%
+      \else
+        \expandafter\gdef\UTFviiiTmp{#2}%
+      \fi
       %
       \expandafter\ifx\csname uni:#1\endcsname \relax \else
        \message{Internal error, already defined: #1}%
@@ -10479,8 +10650,9 @@
       \expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp
     \endgroup}
   %
-  % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp
-  % to the corresponding UTF-8 sequence.
+  % Given the value in \countUTFz as a Unicode code point, set
+  % \UTFviiiTmp to one of the \UTVviii*OctetsName macros followed by
+  % the corresponding UTF-8 sequence.
   \gdef\parseXMLCharref{%
     \ifnum\countUTFz < "20\relax
       \errhelp = \EMsimple
@@ -10540,7 +10712,7 @@
 }
 
 % Suppress ligature creation from adjacent characters.
-\ifx\luatexversion\thisisundefined
+\ifluatex
   \def\nolig{{}}
 \else
   % Braces do not suppress ligature creation in LuaTeX, e.g. in of{}fice
@@ -11325,6 +11497,25 @@
   %
   \global\mathchardef\checkmark="1370% actually the square root sign
   \DeclareUnicodeCharacter{2713}{\ensuremath\checkmark}%
+  %
+  % These are all the combining accents.  We need these empty definitions
+  % at present for the sake of PDF outlines.
+  \DeclareUnicodeCharacter{0300}{}%
+  \DeclareUnicodeCharacter{0301}{}%
+  \DeclareUnicodeCharacter{0302}{}%
+  \DeclareUnicodeCharacter{0303}{}%
+  \DeclareUnicodeCharacter{0305}{}%
+  \DeclareUnicodeCharacter{0306}{}%
+  \DeclareUnicodeCharacter{0307}{}%
+  \DeclareUnicodeCharacter{0308}{}%
+  \DeclareUnicodeCharacter{030A}{}%
+  \DeclareUnicodeCharacter{030B}{}%
+  \DeclareUnicodeCharacter{030C}{}%
+  \DeclareUnicodeCharacter{0323}{}%
+  \DeclareUnicodeCharacter{0327}{}%
+  \DeclareUnicodeCharacter{0328}{}%
+  \DeclareUnicodeCharacter{0331}{}%
+  \DeclareUnicodeCharacter{0361}{}%
 }% end of \unicodechardefs
 
 % UTF-8 byte sequence (pdfTeX) definitions (replacing and @U command)
@@ -11463,12 +11654,12 @@
     \pdfhorigin = 1 true in
     \pdfvorigin = 1 true in
   \else
-    \ifx\XeTeXrevision\thisisundefined
-      \special{papersize=#8,#7}%
-    \else
+    \ifxetex
       \pdfpageheight #7\relax
       \pdfpagewidth #8\relax
       % XeTeX does not have \pdfhorigin and \pdfvorigin.
+    \else
+      \special{papersize=#8,#7}%
     \fi
   \fi
   %
@@ -11668,8 +11859,14 @@
   #1#2#3=\countB\relax
 }
 
-\ifx\XeTeXrevision\thisisundefined
-  \ifx\luatexversion\thisisundefined
+\ifxetex % XeTeX
+  \mtsetprotcode\textrm
+  \def\mtfontexpand#1{}
+\else
+  \ifluatex % LuaTeX
+    \mtsetprotcode\textrm
+    \def\mtfontexpand#1{\expandglyphsinfont#1 20 20 1\relax}
+  \else
     \ifpdf % pdfTeX
       \mtsetprotcode\textrm
       \def\mtfontexpand#1{\pdffontexpand#1 20 20 1 autoexpand\relax}
@@ -11676,13 +11873,7 @@
     \else % TeX
       \def\mtfontexpand#1{}
     \fi
-  \else % LuaTeX
-    \mtsetprotcode\textrm
-    \def\mtfontexpand#1{\expandglyphsinfont#1 20 20 1\relax}
   \fi
-\else % XeTeX
-  \mtsetprotcode\textrm
-  \def\mtfontexpand#1{}
 \fi
 
 
@@ -11691,18 +11882,18 @@
 \def\microtypeON{%
   \microtypetrue
   %
-  \ifx\XeTeXrevision\thisisundefined
-    \ifx\luatexversion\thisisundefined
+  \ifxetex % XeTeX
+    \XeTeXprotrudechars=2
+  \else
+    \ifluatex % LuaTeX
+      \adjustspacing=2
+      \protrudechars=2
+    \else
       \ifpdf % pdfTeX
         \pdfadjustspacing=2
         \pdfprotrudechars=2
       \fi
-    \else % LuaTeX
-      \adjustspacing=2
-      \protrudechars=2
     \fi
-  \else % XeTeX
-    \XeTeXprotrudechars=2
   \fi
   %
   \mtfontexpand\textrm
@@ -11713,18 +11904,18 @@
 \def\microtypeOFF{%
   \microtypefalse
   %
-  \ifx\XeTeXrevision\thisisundefined
-    \ifx\luatexversion\thisisundefined
+  \ifxetex % XeTeX
+    \XeTeXprotrudechars=0
+  \else
+    \ifluatex % LuaTeX
+      \adjustspacing=0
+      \protrudechars=0
+    \else
       \ifpdf % pdfTeX
         \pdfadjustspacing=0
         \pdfprotrudechars=0
       \fi
-    \else % LuaTeX
-      \adjustspacing=0
-      \protrudechars=0
     \fi
-  \else % XeTeX
-    \XeTeXprotrudechars=0
   \fi
 }
 

Modified: branches/stable/source/src/doc/tlbuild-incl/install-tl.texi
===================================================================
--- branches/stable/source/src/doc/tlbuild-incl/install-tl.texi	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/doc/tlbuild-incl/install-tl.texi	2025-02-15 16:07:47 UTC (rev 951)
@@ -660,8 +660,11 @@
 @item @code{TL_DOWNLOAD_ARGS}
 @anchor{install-tl @code{TL_DOWNLOAD_ARGS}}
 
-These override the normal choice of a download program; see the @code{tlmgr}
-documentation, e.g.,
+ at item @code{TEXLIVE_PREFER_OWN}
+ at anchor{install-tl @code{TEXLIVE_PREFER_OWN}}
+
+These override the normal choice of the download and other utility
+programs; see the @code{tlmgr} documentation, e.g.,
 @url{https://tug.org/texlive/doc/tlmgr.html#ENVIRONMENT-VARIABLES}.
 
 @item @code{TEXLIVE_INSTALL_ENV_NOCHECK}
@@ -803,5 +806,5 @@
 distribution (@url{https://tug.org/texlive}) and both are licensed under the
 GNU General Public License Version 2 or later.
 
-$Id: install-tl 69711 2024-02-05 17:23:27Z karl $
+$Id: install-tl 73024 2024-12-03 17:12:38Z karl $
 

Modified: branches/stable/source/src/doc/tlbuild-incl/tlmgr.texi
===================================================================
--- branches/stable/source/src/doc/tlbuild-incl/tlmgr.texi	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/doc/tlbuild-incl/tlmgr.texi	2025-02-15 16:07:47 UTC (rev 951)
@@ -418,8 +418,8 @@
 as any substring, and outputs bug-reporting and other information for
 the package selected from the results.
 
-The search is equivalent to @code{tlmgr search --word --file @emph{search-string}.
-Thus, @emph{search-string} is interpreted as a (Perl) regular expression.}
+The search is equivalent to @code{tlmgr search --word --file} @emph{search-string}.
+Thus, @emph{search-string} is interpreted as a (Perl) regular expression.
 
 @node tlmgr candidates @emph{pkg}
 @appendixsubsec candidates @emph{pkg}
@@ -586,7 +586,7 @@
 @anchor{tlmgr @strong{@asis{}- at asis{}- at asis{}json}}
 
 Instead of dumping the actual content, the database is dumped as
-JSON. For the format of JSON output see @code{tlpkg/doc/JSON-formats.txt},
+JSON. For the format of JSON output see @code{tlpkg/doc/json-formats.txt},
 format definition @code{TLPDB}.
 
 @end table
@@ -625,7 +625,7 @@
 
 The @code{generate} action overwrites any manual changes made in the
 respective files: it recreates them from scratch based on the
-information of the installed packages, plus local adaptions.
+information of the installed packages, plus local adaptations.
 The TeX Live installer and @code{tlmgr} routinely call @code{generate} for
 all of these files.
 
@@ -789,6 +789,13 @@
 When given with schemes and collections, @code{--list} outputs their
 dependencies in a similar way.
 
+ at item @strong{@asis{}- at asis{}- at asis{}only-files}
+ at anchor{tlmgr @strong{@asis{}- at asis{}- at asis{}only-files}}
+
+If this option is given, only the files for a given package are listed,
+no further information. If more than one package name is given, each
+file list is preceded by the package name.
+
 @item @strong{@asis{}- at asis{}- at asis{}only-installed}
 @anchor{tlmgr @strong{@asis{}- at asis{}- at asis{}only-installed}}
 
@@ -832,11 +839,11 @@
 @item @strong{@asis{}- at asis{}- at asis{}json}
 @anchor{tlmgr @strong{@asis{}- at asis{}- at asis{}json} 1}
 
-In case @code{--json} is specified, the output is a JSON encoded array where
-each array element is the JSON representation of a single @code{TLPOBJ} but
-with additional information. For details see
- at code{tlpkg/doc/JSON-formats.txt}, format definition: @code{TLPOBJINFO}. If both
- at code{--json} and @code{--data} are given, @code{--json} takes precedence.
+If @code{--json} is specified, the output is a JSON encoded array where each
+array element is the JSON representation of a single @code{TLPOBJ} but with
+additional information. For details see @code{tlpkg/doc/json-formats.txt},
+format definition: @code{TLPOBJINFO}. If both @code{--json} and @code{--data} are
+given, @code{--json} takes precedence.
 
 @end table
 
@@ -989,7 +996,7 @@
 Both @code{show...} forms take an option @code{--json}, which dumps the option
 information in JSON format.  In this case, both forms dump the same
 data. For the format of the JSON output see
- at code{tlpkg/doc/JSON-formats.txt}, format definition @code{TLOPTION}.
+ at code{tlpkg/doc/json-formats.txt}, format definition @code{TLOPTION}.
 
 In the third form, with @emph{key}, if @emph{value} is not given, the setting
 for @emph{key} is displayed.  If @emph{value} is present, @emph{key} is set to
@@ -1075,7 +1082,7 @@
 @code{desktop_integration} is set, then some packages will install items in
 a sub-folder of the Start menu for @code{tlmgr gui}, documentation, etc.  If
 @code{fileassocs} is set, Windows file associations are made (see also the
- at code{postaction} action).  Finally, if @code{multiuser} is set, then adaptions
+ at code{postaction} action).  Finally, if @code{multiuser} is set, then changes
 to the registry and the menus are done for all users on the system
 instead of only the current user.  All three options are on by default.
 
@@ -1114,7 +1121,7 @@
 
 If @code{--json} is specified without other options, the paper setup is
 dumped in JSON format. For the format of JSON output see
- at code{tlpkg/doc/JSON-formats.txt}, format definition @code{TLPAPER}.
+ at code{tlpkg/doc/json-formats.txt}, format definition @code{TLPAPER}.
 
 Incidentally, this syntax of having a specific program name before the
 @code{paper} keyword is unusual.  It is inherited from the longstanding
@@ -1380,7 +1387,9 @@
 @item @strong{repository status}
 @anchor{tlmgr @strong{repository status}}
 
-This action manages the list of repositories.  See @ref{,,, MULTIPLE_REPOSITORIES} below for detailed explanations.
+This action manages the list of repositories.  See @url{https://metacpan.org/pod/MULTIPLE
+REPOSITORIES, MULTIPLE
+REPOSITORIES} below for detailed explanations.
 
 The first form, @code{repository list}, lists all configured repositories
 and the respective tags if set. If a path, url, or tag is given after
@@ -1478,10 +1487,11 @@
 @item @strong{@asis{}- at asis{}- at asis{}json}
 @anchor{tlmgr @strong{@asis{}- at asis{}- at asis{}json} 2}
 
-When listing backups, the option @code{--json} turn on JSON output.
-The format is an array of JSON objects (@code{name}, @code{rev}, @code{date}).
-For details see @code{tlpkg/doc/JSON-formats.txt}, format definition: @code{TLBACKUPS}.
-If both @code{--json} and @code{--data} are given, @code{--json} takes precedence.
+When listing backups, the option @code{--json} writes JSON output. The
+format is an array of JSON objects (@code{name}, @code{rev}, @code{date}). For
+details see @code{tlpkg/doc/json-formats.txt}, format definition:
+ at code{TLBACKUPS}. If both @code{--json} and @code{--data} are given, @code{--json} takes
+precedence.
 
 @end table
 
@@ -1531,6 +1541,13 @@
 @code{table} with this option will not output packages containing the word
 @code{tables} (unless they also contain the word @code{table} on its own).
 
+ at item @strong{@asis{}- at asis{}- at asis{}json}
+ at anchor{tlmgr @strong{@asis{}- at asis{}- at asis{}json} 3}
+
+Output search results as a JSON hash with two keys: @strong{files} and
+ at strong{packages}. For the format of the JSON output see
+ at code{tlpkg/doc/json-formats.txt}, format definition @code{TLSEARCH}.
+
 @end table
 
 @end table
@@ -2700,18 +2717,5 @@
 distribution (@url{https://tug.org/texlive}) and both are licensed under the
 GNU General Public License Version 2 or later.
 
-$Id: tlmgr.pl 70001 2024-02-19 23:17:07Z karl $
+$Id: tlmgr.pl 73493 2025-01-17 22:28:29Z karl $
 
- at node tlmgr POD ERRORS
- at appendixsec POD ERRORS
-
-Hey! @strong{The above document had some coding errors, which are explained below:}
-
- at table @asis
- at item Around line 8454:
- at anchor{tlmgr Around line 8454 at asis{:}}
-
-Unterminated C<...> sequence
-
- at end table
-

Modified: branches/stable/source/src/doc/tlbuild.info
===================================================================
--- branches/stable/source/src/doc/tlbuild.info	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/doc/tlbuild.info	2025-02-15 16:07:47 UTC (rev 951)
@@ -2970,8 +2970,10 @@
 
 'TL_DOWNLOAD_ARGS'
 
-     These override the normal choice of a download program; see the
-     'tlmgr' documentation, e.g.,
+'TEXLIVE_PREFER_OWN'
+
+     These override the normal choice of the download and other utility
+     programs; see the 'tlmgr' documentation, e.g.,
      <https://tug.org/texlive/doc/tlmgr.html#ENVIRONMENT-VARIABLES>.
 
 'TEXLIVE_INSTALL_ENV_NOCHECK'
@@ -3108,7 +3110,7 @@
 distribution (<https://tug.org/texlive>) and both are licensed under the
 GNU General Public License Version 2 or later.
 
-   $Id: install-tl 69711 2024-02-05 17:23:27Z karl $
+   $Id: install-tl 73024 2024-12-03 17:12:38Z karl $
 
 
 File: tlbuild.info,  Node: tlmgr,  Next: Index,  Prev: install-tl,  Up: Top
@@ -3132,7 +3134,6 @@
 * tlmgr MACHINE-READABLE OUTPUT::
 * tlmgr ENVIRONMENT VARIABLES::
 * tlmgr AUTHORS AND COPYRIGHT::
-* tlmgr POD ERRORS::
 
 
 File: tlbuild.info,  Node: tlmgr NAME,  Next: tlmgr SYNOPSIS,  Up: tlmgr
@@ -3571,9 +3572,9 @@
 as any substring, and outputs bug-reporting and other information for
 the package selected from the results.
 
-   The search is equivalent to 'tlmgr search --word --file
-_search-string_. Thus, _search-string_ is interpreted as a (Perl)
-regular expression.'
+   The search is equivalent to 'tlmgr search --word --file'
+_search-string_.  Thus, _search-string_ is interpreted as a (Perl)
+regular expression.
 
 
 File: tlbuild.info,  Node: tlmgr candidates _pkg_,  Next: tlmgr check [_option_...] [depends|executes|files|runfiles|texmfdbs|all],  Prev: tlmgr bug [_search-string_],  Up: tlmgr ACTIONS
@@ -3722,7 +3723,7 @@
 
      Instead of dumping the actual content, the database is dumped as
      JSON.  For the format of JSON output see
-     'tlpkg/doc/JSON-formats.txt', format definition 'TLPDB'.
+     'tlpkg/doc/json-formats.txt', format definition 'TLPDB'.
 
    Exactly one of '--local' and '--remote' must be given.
 
@@ -3753,7 +3754,7 @@
 
    The 'generate' action overwrites any manual changes made in the
 respective files: it recreates them from scratch based on the
-information of the installed packages, plus local adaptions.  The TeX
+information of the installed packages, plus local adaptations.  The TeX
 Live installer and 'tlmgr' routinely call 'generate' for all of these
 files.
 
@@ -3903,6 +3904,12 @@
           collections, '--list' outputs their dependencies in a similar
           way.
 
+     *--only-files*
+
+          If this option is given, only the files for a given package
+          are listed, no further information.  If more than one package
+          name is given, each file list is preceded by the package name.
+
      *--only-installed*
 
           If this option is given, the installation source will not be
@@ -3945,10 +3952,10 @@
 
      *--json*
 
-          In case '--json' is specified, the output is a JSON encoded
-          array where each array element is the JSON representation of a
+          If '--json' is specified, the output is a JSON encoded array
+          where each array element is the JSON representation of a
           single 'TLPOBJ' but with additional information.  For details
-          see 'tlpkg/doc/JSON-formats.txt', format definition:
+          see 'tlpkg/doc/json-formats.txt', format definition:
           'TLPOBJINFO'.  If both '--json' and '--data' are given,
           '--json' takes precedence.
 
@@ -4091,7 +4098,7 @@
    Both 'show...' forms take an option '--json', which dumps the option
 information in JSON format.  In this case, both forms dump the same
 data.  For the format of the JSON output see
-'tlpkg/doc/JSON-formats.txt', format definition 'TLOPTION'.
+'tlpkg/doc/json-formats.txt', format definition 'TLOPTION'.
 
    In the third form, with _key_, if _value_ is not given, the setting
 for _key_ is displayed.  If _value_ is present, _key_ is set to _value_.
@@ -4170,7 +4177,7 @@
 'desktop_integration' is set, then some packages will install items in a
 sub-folder of the Start menu for 'tlmgr gui', documentation, etc.  If
 'fileassocs' is set, Windows file associations are made (see also the
-'postaction' action).  Finally, if 'multiuser' is set, then adaptions to
+'postaction' action).  Finally, if 'multiuser' is set, then changes to
 the registry and the menus are done for all users on the system instead
 of only the current user.  All three options are on by default.
 
@@ -4206,7 +4213,7 @@
 
    If '--json' is specified without other options, the paper setup is
 dumped in JSON format.  For the format of JSON output see
-'tlpkg/doc/JSON-formats.txt', format definition 'TLPAPER'.
+'tlpkg/doc/json-formats.txt', format definition 'TLPAPER'.
 
    Incidentally, this syntax of having a specific program name before
 the 'paper' keyword is unusual.  It is inherited from the longstanding
@@ -4456,8 +4463,9 @@
 
 *repository status*
 
-     This action manages the list of repositories.  See *note
-     (MULTIPLE_REPOSITORIES)Top:: below for detailed explanations.
+     This action manages the list of repositories.  See MULTIPLE
+     REPOSITORIES (https://metacpan.org/pod/MULTIPLE REPOSITORIES) below
+     for detailed explanations.
 
      The first form, 'repository list', lists all configured
      repositories and the respective tags if set.  If a path, url, or
@@ -4547,9 +4555,9 @@
 
      *--json*
 
-          When listing backups, the option '--json' turn on JSON output.
+          When listing backups, the option '--json' writes JSON output.
           The format is an array of JSON objects ('name', 'rev',
-          'date').  For details see 'tlpkg/doc/JSON-formats.txt', format
+          'date').  For details see 'tlpkg/doc/json-formats.txt', format
           definition: 'TLBACKUPS'.  If both '--json' and '--data' are
           given, '--json' takes precedence.
 
@@ -4592,6 +4600,12 @@
           containing the word 'tables' (unless they also contain the
           word 'table' on its own).
 
+     *--json*
+
+          Output search results as a JSON hash with two keys: *files*
+          and *packages*.  For the format of the JSON output see
+          'tlpkg/doc/json-formats.txt', format definition 'TLSEARCH'.
+
 
 File: tlbuild.info,  Node: tlmgr shell,  Next: tlmgr show,  Prev: tlmgr search,  Up: tlmgr ACTIONS
 
@@ -5736,7 +5750,7 @@
      used, regardless of any setting.
 
 
-File: tlbuild.info,  Node: tlmgr AUTHORS AND COPYRIGHT,  Next: tlmgr POD ERRORS,  Prev: tlmgr ENVIRONMENT VARIABLES,  Up: tlmgr
+File: tlbuild.info,  Node: tlmgr AUTHORS AND COPYRIGHT,  Prev: tlmgr ENVIRONMENT VARIABLES,  Up: tlmgr
 
 B.14 AUTHORS AND COPYRIGHT
 ==========================
@@ -5745,22 +5759,9 @@
 distribution (<https://tug.org/texlive>) and both are licensed under the
 GNU General Public License Version 2 or later.
 
-   $Id: tlmgr.pl 70001 2024-02-19 23:17:07Z karl $
+   $Id: tlmgr.pl 73493 2025-01-17 22:28:29Z karl $
 
 
-File: tlbuild.info,  Node: tlmgr POD ERRORS,  Prev: tlmgr AUTHORS AND COPYRIGHT,  Up: tlmgr
-
-B.15 POD ERRORS
-===============
-
-Hey!  *The above document had some coding errors, which are explained
-below:*
-
-Around line 8454:
-
-     Unterminated C<...> sequence
-
-
 File: tlbuild.info,  Node: Index,  Prev: tlmgr,  Up: Top
 
 Index
@@ -6513,288 +6514,289 @@
 Ref: install-tl TEXLIVE_DOWNLOADER117710
 Ref: install-tl TL_DOWNLOAD_PROGRAM117733
 Ref: install-tl TL_DOWNLOAD_ARGS117753
-Ref: install-tl TEXLIVE_INSTALL_ENV_NOCHECK117957
-Ref: install-tl TEXLIVE_INSTALL_NO_CONTEXT_CACHE118159
-Ref: install-tl TEXLIVE_INSTALL_NO_DISKCHECK118271
-Ref: install-tl TEXLIVE_INSTALL_NO_RESUME118687
-Ref: install-tl TEXLIVE_INSTALL_NO_WELCOME118839
-Ref: install-tl TEXLIVE_INSTALL_PAPER118960
-Ref: install-tl TEXLIVE_INSTALL_PREFIX119106
-Ref: install-tl TEXLIVE_INSTALL_TEXMFCONFIG119137
-Ref: install-tl TEXLIVE_INSTALL_TEXMFVAR119165
-Ref: install-tl TEXLIVE_INSTALL_TEXMFHOME119194
-Ref: install-tl TEXLIVE_INSTALL_TEXMFLOCAL119224
-Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSCONFIG119258
-Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSVAR119289
-Node: install-tl DIRECTORY TREES119727
-Node: install-tl BUGS122311
-Node: install-tl AUTHORS AND COPYRIGHT123191
-Node: tlmgr123589
-Node: tlmgr NAME124095
-Node: tlmgr SYNOPSIS124239
-Node: tlmgr DESCRIPTION124441
-Node: tlmgr EXAMPLES125552
-Ref: tlmgr tlmgr option repository ctan125815
-Ref: tlmgr tlmgr option repository https://mirror.ctan.org/systems/texlive/tlnet125888
-Ref: tlmgr tlmgr update --list126493
-Ref: tlmgr tlmgr update --all126586
-Ref: tlmgr tlmgr info _what_126743
-Ref: tlmgr tlmgr bug _what_126921
-Node: tlmgr OPTIONS127116
-Ref: tlmgr *--repository* _url|path_127649
-Ref: tlmgr /some/local/dir128835
-Ref: tlmgr file:/some/local/dir128864
-Ref: tlmgr ctan128937
-Ref: tlmgr https://mirror.ctan.org/systems/texlive/tlnet128991
-Ref: tlmgr http://server/path/to/tlnet129332
-Ref: tlmgr https://server/path/to/tlnet129713
-Ref: tlmgr ftp://server/path/to/tlnet130181
-Ref: tlmgr user at machine:/path/to/tlnet130313
-Ref: tlmgr scp://user@machine/path/to/tlnet130354
-Ref: tlmgr ssh://user@machine/path/to/tlnet130395
-Ref: tlmgr *--gui* [_action_]130789
-Ref: tlmgr *--gui-lang* _llcode_131603
-Ref: tlmgr *--command-logfile* _file_132345
-Ref: tlmgr *--debug-translation*132612
-Ref: tlmgr *--machine-readable*132816
-Ref: tlmgr *--no-execute-actions*133085
-Ref: tlmgr *--package-logfile* _file_133279
-Ref: tlmgr *--pause*133534
-Ref: tlmgr *--persistent-downloads*133690
-Ref: tlmgr *--no-persistent-downloads*133719
-Ref: tlmgr *--pin-file*134214
-Ref: tlmgr *--usermode*134433
-Ref: tlmgr *--usertree* _dir_134554
-Ref: tlmgr *--verify-repo=[none|main|all]*134681
-Node: tlmgr ACTIONS135580
-Node: tlmgr help136473
-Node: tlmgr version136950
-Node: tlmgr backup137213
-Ref: tlmgr *backup [_option_...] --all*137390
-Ref: tlmgr *backup [_option_...] _pkg_...*137423
-Ref: tlmgr *--backupdir* _directory_138490
-Ref: tlmgr *--all*138708
-Ref: tlmgr *--clean*[=_N_]138961
-Ref: tlmgr *--dry-run*139289
-Node: tlmgr bug [_search-string_]139419
-Node: tlmgr candidates _pkg_140005
-Node: tlmgr check [_option_...] [depends|executes|files|runfiles|texmfdbs|all]140375
-Ref: tlmgr *depends*140889
-Ref: tlmgr *executes*141231
-Ref: tlmgr *files*141346
-Ref: tlmgr *runfiles*141482
-Ref: tlmgr *texmfdbs*141619
-Ref: tlmgr - all items in TEXMFDBS have the !! prefix.141849
-Ref: tlmgr - all items in TEXMFBDS have an ls-R file (if they exist at all).141925
-Ref: tlmgr - all items in TEXMF with !! are listed in TEXMFDBS.141990
-Ref: tlmgr - all items in TEXMF with an ls-R file are listed in TEXMFDBS.142065
-Ref: tlmgr *--use-svn*142091
-Node: tlmgr conf142232
-Ref: tlmgr *conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]]*142522
-Ref: tlmgr *conf auxtrees [--conffile _file_] [show|add|remove] [_value_]*142587
-Node: tlmgr dump-tlpdb [_option_...] [--json]145003
-Ref: tlmgr *--local*145439
-Ref: tlmgr *--remote*145479
-Ref: tlmgr *--json*145518
-Node: tlmgr generate146090
-Ref: tlmgr *generate [_option_...] language*146286
-Ref: tlmgr *generate [_option_...] language.dat*146325
-Ref: tlmgr *generate [_option_...] language.def*146364
-Ref: tlmgr *generate [_option_...] language.dat.lua*146407
-Ref: tlmgr *--dest* _output_file_148735
-Ref: tlmgr *--localcfg* _local_conf_file_149312
-Ref: tlmgr *--rebuild-sys*149436
-Node: tlmgr gui150251
-Node: tlmgr info150431
-Ref: tlmgr *info [_option_...] _pkg_...*150593
-Ref: tlmgr *info [_option_...] collections*150627
-Ref: tlmgr *info [_option_...] schemes*150657
-Ref: tlmgr *--list*152188
-Ref: tlmgr *--only-installed*152503
-Ref: tlmgr *--only-remote*152692
-Ref: tlmgr *--data item1,item2,...*152997
-Ref: tlmgr *--json* 1154370
-Node: tlmgr init-usertree154753
-Node: tlmgr install [_option_...] _pkg_...155134
-Ref: tlmgr *--dry-run* 1155643
-Ref: tlmgr *--file*155761
-Ref: tlmgr *--force*155984
-Ref: tlmgr *--no-depends*156205
-Ref: tlmgr *--no-depends-at-all*156365
-Ref: tlmgr *--reinstall*156766
-Ref: tlmgr *--with-doc*157145
-Ref: tlmgr *--with-src*157159
-Node: tlmgr key157887
-Ref: tlmgr *key list*158045
-Ref: tlmgr *key add _file_*158063
-Ref: tlmgr *key remove _keyid_*158085
-Node: tlmgr list158679
-Node: tlmgr option158841
-Ref: tlmgr *option [--json] [show]*158997
-Ref: tlmgr *option [--json] showall|help*159029
-Ref: tlmgr *option _key_ [_value_]*159055
-Node: tlmgr paper163634
-Ref: tlmgr *paper [a4|letter]*163783
-Ref: tlmgr *<[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|--list]*>163860
-Ref: tlmgr *paper --json*163876
-Node: tlmgr path165091
-Ref: tlmgr *path [--windowsmode=user|admin] add*165257
-Ref: tlmgr *path [--windowsmode=user|admin] remove*165299
-Node: tlmgr pinning166814
-Ref: tlmgr pinning show167055
-Ref: tlmgr pinning add _repo_ _pkgglob_...167128
-Ref: tlmgr pinning remove _repo_ _pkgglob_...167247
-Ref: tlmgr pinning remove _repo_ --all167400
-Node: tlmgr platform167454
-Ref: tlmgr *platform list|add|remove _platform_...*167640
-Ref: tlmgr *platform set _platform_*167667
-Ref: tlmgr *platform set auto*167688
-Ref: tlmgr *--dry-run* 2168566
-Node: tlmgr postaction168685
-Ref: tlmgr *postaction [_option_...] install [shortcut|fileassoc|script] [_pkg_...]*168915
-Ref: tlmgr *postaction [_option_...] remove [shortcut|fileassoc|script] [_pkg_...]*168989
-Ref: tlmgr *--windowsmode=[user|admin]*169309
-Ref: tlmgr *--fileassocmode=[1|2]*169734
-Ref: tlmgr *--all* 1170020
-Node: tlmgr print-platform170075
-Node: tlmgr print-platform-info170406
-Node: tlmgr remove [_option_...] _pkg_...170706
-Ref: tlmgr *--all* 2171191
-Ref: tlmgr *--backup*171302
-Ref: tlmgr *--backupdir* _directory_ 1171329
-Ref: tlmgr *--no-depends* 1171734
-Ref: tlmgr *--no-depends-at-all* 1171797
-Ref: tlmgr *--force* 1171904
-Ref: tlmgr *--dry-run* 3172378
-Node: tlmgr repository172755
-Ref: tlmgr *repository list*172943
-Ref: tlmgr *repository list _path|url|tag_*172977
-Ref: tlmgr *repository add _path_ [_tag_]*173010
-Ref: tlmgr *repository remove _path|tag_*173042
-Ref: tlmgr *repository set _path_[#_tag_] [_path_[#_tag_] ...]*173096
-Ref: tlmgr *repository status*173117
-Ref: tlmgr The tag (which can be the same as the url);174347
-Node: tlmgr restore174825
-Ref: tlmgr *restore [_option_...] _pkg_ [_rev_]*175004
-Ref: tlmgr *restore [_option_...] --all*175035
-Ref: tlmgr *--all* 3175736
-Ref: tlmgr *--backupdir* _directory_ 2175951
-Ref: tlmgr *--dry-run* 4176133
-Ref: tlmgr *--force* 2176266
-Ref: tlmgr *--json* 2176313
-Node: tlmgr search176640
-Ref: tlmgr *search [_option_...] _what_*176804
-Ref: tlmgr *search [_option_...] --file _what_*176842
-Ref: tlmgr *search [_option_...] --all _what_*176879
-Ref: tlmgr *--file* 1177100
-Ref: tlmgr *--all* 4177163
-Ref: tlmgr *--global*177253
-Ref: tlmgr *--word*177381
-Node: tlmgr shell177696
-Ref: tlmgr protocol178431
-Ref: tlmgr help 1178495
-Ref: tlmgr version 1178548
-Ref: tlmgr quit, end, bye, byebye, EOF178616
-Ref: tlmgr restart178637
-Ref: tlmgr load [local|remote]178760
-Ref: tlmgr save178830
-Ref: tlmgr get [_var_] =item set [_var_ [_val_]]178953
-Node: tlmgr show179554
-Node: tlmgr uninstall179721
-Node: tlmgr update [_option_...] [_pkg_...]179953
-Ref: tlmgr *--all* 5180325
-Ref: tlmgr *--self*182505
-Ref: tlmgr *--dry-run* 5183270
-Ref: tlmgr *--list* [_pkg_]183448
-Ref: tlmgr *--exclude* _pkg_184138
-Ref: tlmgr *--no-auto-remove* [_pkg_...]184939
-Ref: tlmgr *--no-auto-install* [_pkg_...]185424
-Ref: tlmgr *--reinstall-forcibly-removed*186187
-Ref: tlmgr *--backup* 1186723
-Ref: tlmgr *--backupdir* _directory_ 3186750
-Ref: tlmgr *--no-depends* 2187917
-Ref: tlmgr *--no-depends-at-all* 2188121
-Ref: tlmgr *--force* 3188228
-Node: tlmgr CONFIGURATION FILE FOR TLMGR189219
-Ref: tlmgr auto-remove = 0 or 1 (default 1), same as command-line option.190221
-Ref: tlmgr gui-expertmode = 0 or 1 (default 1). This switches between the full GUI and a simplified GUI with only the most common settings.190353
-Ref: tlmgr gui-lang = _llcode_, with a language code value as with the command-line option.190437
-Ref: tlmgr no-checksums = 0 or 1 (default 0, see below).190486
-Ref: tlmgr persistent-downloads = 0 or 1 (default 1), same as command-line option.190561
-Ref: tlmgr require-verification = 0 or 1 (default 0), same as command-line option.190636
-Ref: tlmgr tkfontscale = _floating-point number_ (default 1.0); scaling factor for fonts in the Tk-based frontends.190744
-Ref: tlmgr update-exclude = _comma-separated list of packages_ (no spaces allowed). Same as the command line option --exclude for the update action.190889
-Ref: tlmgr verify-downloads = 0 or 1 (default 1), same as command-line option.190960
-Ref: tlmgr allowed-actions = _action1_[,_action2_,...] The value is a comma-separated list (no spaces) of tlmgr actions which are allowed to be executed when tlmgr is invoked in system mode (that is, without --usermode). This allows distributors to include tlmgr in their packaging, but allow only a restricted set of actions that do not interfere with their distro package manager. For native TeX Live installations, it doesn't make sense to set this.191477
-Node: tlmgr CRYPTOGRAPHIC VERIFICATION192309
-Node: tlmgr Configuration of GnuPG invocation194482
-Node: tlmgr USER MODE195120
-Node: tlmgr User mode install197991
-Node: tlmgr User mode backup, restore, remove, update199137
-Node: tlmgr User mode generate, option, paper199583
-Node: tlmgr User mode logs199950
-Node: tlmgr MULTIPLE REPOSITORIES200248
-Node: tlmgr Pinning201977
-Node: tlmgr GUI FOR TLMGR203900
-Node: tlmgr Main display205549
-Node: tlmgr Display configuration area205801
-Ref: tlmgr Status206162
-Ref: tlmgr Category206326
-Ref: tlmgr Match206512
-Ref: tlmgr Selection206693
-Ref: tlmgr Display configuration buttons206897
-Node: tlmgr Package list area207080
-Ref: tlmgr a checkbox207664
-Ref: tlmgr package name207800
-Ref: tlmgr local revision (and version)207899
-Ref: tlmgr remote revision (and version)208274
-Ref: tlmgr short description208571
-Node: tlmgr Main display action buttons208616
-Ref: tlmgr Update all installed208882
-Ref: tlmgr Update209254
-Ref: tlmgr Install209304
-Ref: tlmgr Remove209490
-Ref: tlmgr Backup209668
-Node: tlmgr Menu bar209825
-Ref: tlmgr tlmgr menu210048
-Ref: tlmgr Options menu210356
-Ref: tlmgr Actions menu211439
-Ref: tlmgr Help menu211867
-Node: tlmgr GUI options212001
-Ref: tlmgr -background _color_212247
-Ref: tlmgr -font " _fontname_ _fontsize_ "212312
-Ref: tlmgr -foreground _color_212470
-Ref: tlmgr -geometry _geomspec_212522
-Ref: tlmgr -xrm _xresource_212714
-Node: tlmgr MACHINE-READABLE OUTPUT212983
-Node: tlmgr Machine-readable update and install output213797
-Ref: tlmgr location-url _location_215073
-Ref: tlmgr total-bytes _count_215289
-Ref: tlmgr _pkgname_215699
-Ref: tlmgr _status_215909
-Ref: tlmgr d215987
-Ref: tlmgr f216047
-Ref: tlmgr u216226
-Ref: tlmgr r216272
-Ref: tlmgr a216395
-Ref: tlmgr i216573
-Ref: tlmgr I216692
-Ref: tlmgr _localrev_216794
-Ref: tlmgr _serverrev_216901
-Ref: tlmgr _size_217013
-Ref: tlmgr _runtime_217182
-Ref: tlmgr _esttot_217252
-Node: tlmgr Machine-readable option output217285
-Node: tlmgr ENVIRONMENT VARIABLES217797
-Ref: tlmgr TEXLIVE_COMPRESSOR218308
-Ref: tlmgr TEXLIVE_DOWNLOADER219156
-Ref: tlmgr TL_DOWNLOAD_PROGRAM219179
-Ref: tlmgr TL_DOWNLOAD_ARGS219199
-Ref: tlmgr TEXLIVE_PREFER_OWN220225
-Node: tlmgr AUTHORS AND COPYRIGHT221049
-Node: tlmgr POD ERRORS221472
-Ref: tlmgr Around line 8454:221697
-Node: Index221733
+Ref: install-tl TEXLIVE_PREFER_OWN117775
+Ref: install-tl TEXLIVE_INSTALL_ENV_NOCHECK118000
+Ref: install-tl TEXLIVE_INSTALL_NO_CONTEXT_CACHE118202
+Ref: install-tl TEXLIVE_INSTALL_NO_DISKCHECK118314
+Ref: install-tl TEXLIVE_INSTALL_NO_RESUME118730
+Ref: install-tl TEXLIVE_INSTALL_NO_WELCOME118882
+Ref: install-tl TEXLIVE_INSTALL_PAPER119003
+Ref: install-tl TEXLIVE_INSTALL_PREFIX119149
+Ref: install-tl TEXLIVE_INSTALL_TEXMFCONFIG119180
+Ref: install-tl TEXLIVE_INSTALL_TEXMFVAR119208
+Ref: install-tl TEXLIVE_INSTALL_TEXMFHOME119237
+Ref: install-tl TEXLIVE_INSTALL_TEXMFLOCAL119267
+Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSCONFIG119301
+Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSVAR119332
+Node: install-tl DIRECTORY TREES119770
+Node: install-tl BUGS122354
+Node: install-tl AUTHORS AND COPYRIGHT123234
+Node: tlmgr123632
+Node: tlmgr NAME124117
+Node: tlmgr SYNOPSIS124261
+Node: tlmgr DESCRIPTION124463
+Node: tlmgr EXAMPLES125574
+Ref: tlmgr tlmgr option repository ctan125837
+Ref: tlmgr tlmgr option repository https://mirror.ctan.org/systems/texlive/tlnet125910
+Ref: tlmgr tlmgr update --list126515
+Ref: tlmgr tlmgr update --all126608
+Ref: tlmgr tlmgr info _what_126765
+Ref: tlmgr tlmgr bug _what_126943
+Node: tlmgr OPTIONS127138
+Ref: tlmgr *--repository* _url|path_127671
+Ref: tlmgr /some/local/dir128857
+Ref: tlmgr file:/some/local/dir128886
+Ref: tlmgr ctan128959
+Ref: tlmgr https://mirror.ctan.org/systems/texlive/tlnet129013
+Ref: tlmgr http://server/path/to/tlnet129354
+Ref: tlmgr https://server/path/to/tlnet129735
+Ref: tlmgr ftp://server/path/to/tlnet130203
+Ref: tlmgr user at machine:/path/to/tlnet130335
+Ref: tlmgr scp://user@machine/path/to/tlnet130376
+Ref: tlmgr ssh://user@machine/path/to/tlnet130417
+Ref: tlmgr *--gui* [_action_]130811
+Ref: tlmgr *--gui-lang* _llcode_131625
+Ref: tlmgr *--command-logfile* _file_132367
+Ref: tlmgr *--debug-translation*132634
+Ref: tlmgr *--machine-readable*132838
+Ref: tlmgr *--no-execute-actions*133107
+Ref: tlmgr *--package-logfile* _file_133301
+Ref: tlmgr *--pause*133556
+Ref: tlmgr *--persistent-downloads*133712
+Ref: tlmgr *--no-persistent-downloads*133741
+Ref: tlmgr *--pin-file*134236
+Ref: tlmgr *--usermode*134455
+Ref: tlmgr *--usertree* _dir_134576
+Ref: tlmgr *--verify-repo=[none|main|all]*134703
+Node: tlmgr ACTIONS135602
+Node: tlmgr help136495
+Node: tlmgr version136972
+Node: tlmgr backup137235
+Ref: tlmgr *backup [_option_...] --all*137412
+Ref: tlmgr *backup [_option_...] _pkg_...*137445
+Ref: tlmgr *--backupdir* _directory_138512
+Ref: tlmgr *--all*138730
+Ref: tlmgr *--clean*[=_N_]138983
+Ref: tlmgr *--dry-run*139311
+Node: tlmgr bug [_search-string_]139441
+Node: tlmgr candidates _pkg_140028
+Node: tlmgr check [_option_...] [depends|executes|files|runfiles|texmfdbs|all]140398
+Ref: tlmgr *depends*140912
+Ref: tlmgr *executes*141254
+Ref: tlmgr *files*141369
+Ref: tlmgr *runfiles*141505
+Ref: tlmgr *texmfdbs*141642
+Ref: tlmgr - all items in TEXMFDBS have the !! prefix.141872
+Ref: tlmgr - all items in TEXMFBDS have an ls-R file (if they exist at all).141948
+Ref: tlmgr - all items in TEXMF with !! are listed in TEXMFDBS.142013
+Ref: tlmgr - all items in TEXMF with an ls-R file are listed in TEXMFDBS.142088
+Ref: tlmgr *--use-svn*142114
+Node: tlmgr conf142255
+Ref: tlmgr *conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]]*142545
+Ref: tlmgr *conf auxtrees [--conffile _file_] [show|add|remove] [_value_]*142610
+Node: tlmgr dump-tlpdb [_option_...] [--json]145026
+Ref: tlmgr *--local*145462
+Ref: tlmgr *--remote*145502
+Ref: tlmgr *--json*145541
+Node: tlmgr generate146113
+Ref: tlmgr *generate [_option_...] language*146309
+Ref: tlmgr *generate [_option_...] language.dat*146348
+Ref: tlmgr *generate [_option_...] language.def*146387
+Ref: tlmgr *generate [_option_...] language.dat.lua*146430
+Ref: tlmgr *--dest* _output_file_148760
+Ref: tlmgr *--localcfg* _local_conf_file_149337
+Ref: tlmgr *--rebuild-sys*149461
+Node: tlmgr gui150276
+Node: tlmgr info150456
+Ref: tlmgr *info [_option_...] _pkg_...*150618
+Ref: tlmgr *info [_option_...] collections*150652
+Ref: tlmgr *info [_option_...] schemes*150682
+Ref: tlmgr *--list*152213
+Ref: tlmgr *--only-files*152524
+Ref: tlmgr *--only-installed*152765
+Ref: tlmgr *--only-remote*152954
+Ref: tlmgr *--data item1,item2,...*153259
+Ref: tlmgr *--json* 1154632
+Node: tlmgr init-usertree155010
+Node: tlmgr install [_option_...] _pkg_...155391
+Ref: tlmgr *--dry-run* 1155900
+Ref: tlmgr *--file*156018
+Ref: tlmgr *--force*156241
+Ref: tlmgr *--no-depends*156462
+Ref: tlmgr *--no-depends-at-all*156622
+Ref: tlmgr *--reinstall*157023
+Ref: tlmgr *--with-doc*157402
+Ref: tlmgr *--with-src*157416
+Node: tlmgr key158144
+Ref: tlmgr *key list*158302
+Ref: tlmgr *key add _file_*158320
+Ref: tlmgr *key remove _keyid_*158342
+Node: tlmgr list158936
+Node: tlmgr option159098
+Ref: tlmgr *option [--json] [show]*159254
+Ref: tlmgr *option [--json] showall|help*159286
+Ref: tlmgr *option _key_ [_value_]*159312
+Node: tlmgr paper163889
+Ref: tlmgr *paper [a4|letter]*164038
+Ref: tlmgr *<[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|--list]*>164115
+Ref: tlmgr *paper --json*164131
+Node: tlmgr path165346
+Ref: tlmgr *path [--windowsmode=user|admin] add*165512
+Ref: tlmgr *path [--windowsmode=user|admin] remove*165554
+Node: tlmgr pinning167069
+Ref: tlmgr pinning show167310
+Ref: tlmgr pinning add _repo_ _pkgglob_...167383
+Ref: tlmgr pinning remove _repo_ _pkgglob_...167502
+Ref: tlmgr pinning remove _repo_ --all167655
+Node: tlmgr platform167709
+Ref: tlmgr *platform list|add|remove _platform_...*167895
+Ref: tlmgr *platform set _platform_*167922
+Ref: tlmgr *platform set auto*167943
+Ref: tlmgr *--dry-run* 2168821
+Node: tlmgr postaction168940
+Ref: tlmgr *postaction [_option_...] install [shortcut|fileassoc|script] [_pkg_...]*169170
+Ref: tlmgr *postaction [_option_...] remove [shortcut|fileassoc|script] [_pkg_...]*169244
+Ref: tlmgr *--windowsmode=[user|admin]*169564
+Ref: tlmgr *--fileassocmode=[1|2]*169989
+Ref: tlmgr *--all* 1170275
+Node: tlmgr print-platform170330
+Node: tlmgr print-platform-info170661
+Node: tlmgr remove [_option_...] _pkg_...170961
+Ref: tlmgr *--all* 2171446
+Ref: tlmgr *--backup*171557
+Ref: tlmgr *--backupdir* _directory_ 1171584
+Ref: tlmgr *--no-depends* 1171989
+Ref: tlmgr *--no-depends-at-all* 1172052
+Ref: tlmgr *--force* 1172159
+Ref: tlmgr *--dry-run* 3172633
+Node: tlmgr repository173010
+Ref: tlmgr *repository list*173198
+Ref: tlmgr *repository list _path|url|tag_*173232
+Ref: tlmgr *repository add _path_ [_tag_]*173265
+Ref: tlmgr *repository remove _path|tag_*173297
+Ref: tlmgr *repository set _path_[#_tag_] [_path_[#_tag_] ...]*173351
+Ref: tlmgr *repository status*173372
+Ref: tlmgr The tag (which can be the same as the url);174643
+Node: tlmgr restore175121
+Ref: tlmgr *restore [_option_...] _pkg_ [_rev_]*175300
+Ref: tlmgr *restore [_option_...] --all*175331
+Ref: tlmgr *--all* 3176032
+Ref: tlmgr *--backupdir* _directory_ 2176247
+Ref: tlmgr *--dry-run* 4176429
+Ref: tlmgr *--force* 2176562
+Ref: tlmgr *--json* 2176609
+Node: tlmgr search176935
+Ref: tlmgr *search [_option_...] _what_*177099
+Ref: tlmgr *search [_option_...] --file _what_*177137
+Ref: tlmgr *search [_option_...] --all _what_*177174
+Ref: tlmgr *--file* 1177395
+Ref: tlmgr *--all* 4177458
+Ref: tlmgr *--global*177548
+Ref: tlmgr *--word*177676
+Ref: tlmgr *--json* 3178005
+Node: tlmgr shell178212
+Ref: tlmgr protocol178947
+Ref: tlmgr help 1179011
+Ref: tlmgr version 1179064
+Ref: tlmgr quit, end, bye, byebye, EOF179132
+Ref: tlmgr restart179153
+Ref: tlmgr load [local|remote]179276
+Ref: tlmgr save179346
+Ref: tlmgr get [_var_] =item set [_var_ [_val_]]179469
+Node: tlmgr show180070
+Node: tlmgr uninstall180237
+Node: tlmgr update [_option_...] [_pkg_...]180469
+Ref: tlmgr *--all* 5180841
+Ref: tlmgr *--self*183021
+Ref: tlmgr *--dry-run* 5183786
+Ref: tlmgr *--list* [_pkg_]183964
+Ref: tlmgr *--exclude* _pkg_184654
+Ref: tlmgr *--no-auto-remove* [_pkg_...]185455
+Ref: tlmgr *--no-auto-install* [_pkg_...]185940
+Ref: tlmgr *--reinstall-forcibly-removed*186703
+Ref: tlmgr *--backup* 1187239
+Ref: tlmgr *--backupdir* _directory_ 3187266
+Ref: tlmgr *--no-depends* 2188433
+Ref: tlmgr *--no-depends-at-all* 2188637
+Ref: tlmgr *--force* 3188744
+Node: tlmgr CONFIGURATION FILE FOR TLMGR189735
+Ref: tlmgr auto-remove = 0 or 1 (default 1), same as command-line option.190737
+Ref: tlmgr gui-expertmode = 0 or 1 (default 1). This switches between the full GUI and a simplified GUI with only the most common settings.190869
+Ref: tlmgr gui-lang = _llcode_, with a language code value as with the command-line option.190953
+Ref: tlmgr no-checksums = 0 or 1 (default 0, see below).191002
+Ref: tlmgr persistent-downloads = 0 or 1 (default 1), same as command-line option.191077
+Ref: tlmgr require-verification = 0 or 1 (default 0), same as command-line option.191152
+Ref: tlmgr tkfontscale = _floating-point number_ (default 1.0); scaling factor for fonts in the Tk-based frontends.191260
+Ref: tlmgr update-exclude = _comma-separated list of packages_ (no spaces allowed). Same as the command line option --exclude for the update action.191405
+Ref: tlmgr verify-downloads = 0 or 1 (default 1), same as command-line option.191476
+Ref: tlmgr allowed-actions = _action1_[,_action2_,...] The value is a comma-separated list (no spaces) of tlmgr actions which are allowed to be executed when tlmgr is invoked in system mode (that is, without --usermode). This allows distributors to include tlmgr in their packaging, but allow only a restricted set of actions that do not interfere with their distro package manager. For native TeX Live installations, it doesn't make sense to set this.191993
+Node: tlmgr CRYPTOGRAPHIC VERIFICATION192825
+Node: tlmgr Configuration of GnuPG invocation194998
+Node: tlmgr USER MODE195636
+Node: tlmgr User mode install198507
+Node: tlmgr User mode backup, restore, remove, update199653
+Node: tlmgr User mode generate, option, paper200099
+Node: tlmgr User mode logs200466
+Node: tlmgr MULTIPLE REPOSITORIES200764
+Node: tlmgr Pinning202493
+Node: tlmgr GUI FOR TLMGR204416
+Node: tlmgr Main display206065
+Node: tlmgr Display configuration area206317
+Ref: tlmgr Status206678
+Ref: tlmgr Category206842
+Ref: tlmgr Match207028
+Ref: tlmgr Selection207209
+Ref: tlmgr Display configuration buttons207413
+Node: tlmgr Package list area207596
+Ref: tlmgr a checkbox208180
+Ref: tlmgr package name208316
+Ref: tlmgr local revision (and version)208415
+Ref: tlmgr remote revision (and version)208790
+Ref: tlmgr short description209087
+Node: tlmgr Main display action buttons209132
+Ref: tlmgr Update all installed209398
+Ref: tlmgr Update209770
+Ref: tlmgr Install209820
+Ref: tlmgr Remove210006
+Ref: tlmgr Backup210184
+Node: tlmgr Menu bar210341
+Ref: tlmgr tlmgr menu210564
+Ref: tlmgr Options menu210872
+Ref: tlmgr Actions menu211955
+Ref: tlmgr Help menu212383
+Node: tlmgr GUI options212517
+Ref: tlmgr -background _color_212763
+Ref: tlmgr -font " _fontname_ _fontsize_ "212828
+Ref: tlmgr -foreground _color_212986
+Ref: tlmgr -geometry _geomspec_213038
+Ref: tlmgr -xrm _xresource_213230
+Node: tlmgr MACHINE-READABLE OUTPUT213499
+Node: tlmgr Machine-readable update and install output214313
+Ref: tlmgr location-url _location_215589
+Ref: tlmgr total-bytes _count_215805
+Ref: tlmgr _pkgname_216215
+Ref: tlmgr _status_216425
+Ref: tlmgr d216503
+Ref: tlmgr f216563
+Ref: tlmgr u216742
+Ref: tlmgr r216788
+Ref: tlmgr a216911
+Ref: tlmgr i217089
+Ref: tlmgr I217208
+Ref: tlmgr _localrev_217310
+Ref: tlmgr _serverrev_217417
+Ref: tlmgr _size_217529
+Ref: tlmgr _runtime_217698
+Ref: tlmgr _esttot_217768
+Node: tlmgr Machine-readable option output217801
+Node: tlmgr ENVIRONMENT VARIABLES218313
+Ref: tlmgr TEXLIVE_COMPRESSOR218824
+Ref: tlmgr TEXLIVE_DOWNLOADER219672
+Ref: tlmgr TL_DOWNLOAD_PROGRAM219695
+Ref: tlmgr TL_DOWNLOAD_ARGS219715
+Ref: tlmgr TEXLIVE_PREFER_OWN220741
+Node: tlmgr AUTHORS AND COPYRIGHT221565
+Node: Index221963
 
 End Tag Table
 

Modified: branches/stable/source/src/texk/README
===================================================================
--- branches/stable/source/src/texk/README	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/README	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,5 +1,5 @@
-$Id: README 73430 2025-01-12 14:58:51Z karl $
-Copyright 2006-2024 TeX Users Group.
+$Id: README 73838 2025-02-09 23:45:32Z takuji $
+Copyright 2006-2025 TeX Users Group.
 You may freely use, modify and/or distribute this file.
 
 This TeX Live directory contains the programs that use the kpathsea
@@ -54,8 +54,9 @@
   dvipdfmx and xdvipdfmx.
     old info: https://project.ktug.org/dvipdfmx/
 
-dvipng 1.17 - checked 31may22
+dvipng 1.18 - checked 5feb25
   https://mirror.ctan.org/dviware/dvipng/
+  aka https://mirror.ctan.org/dviware/dvipng.zip
 
 dvipos - maintained here, by us
 
@@ -106,7 +107,7 @@
 
 ttfdump - maintained here, by us, since Taiwan upstream apparently gone.
 
-upmendex 1.10 - by Takuji Tanaka
+upmendex 1.11 - by Takuji Tanaka
   https://ctan.org/pkg/upmendex
   https://github.com/t-tk/upmendex-package
 

Modified: branches/stable/source/src/texk/kpathsea/ChangeLog
===================================================================
--- branches/stable/source/src/texk/kpathsea/ChangeLog	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/kpathsea/ChangeLog	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,3 +1,12 @@
+2025-02-12  Karl Berry  <karl at freefriends.org>
+
+	* texmf.cnf (shell_escape_commands): doc link to
+	https://tug.org/texinfohtml/web2c.html#Output-file-location.
+
+2025-02-08  Karl Berry  <karl at tug.org>
+
+	* texmf.cnf (TEXMFVAR, TEXMFCONFIG, doc): 2025.
+
 2025-01-25  Karl Berry  <karl at freefriends.org>
 
 	* version.ac (kpse_dev): no more /dev.

Modified: branches/stable/source/src/texk/kpathsea/texmf.cnf
===================================================================
--- branches/stable/source/src/texk/kpathsea/texmf.cnf	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/kpathsea/texmf.cnf	2025-02-15 16:07:47 UTC (rev 951)
@@ -4,8 +4,8 @@
 % If you modify this original file, YOUR CHANGES WILL BE LOST when it is
 % updated.  Instead, put your changes -- and only your changes, not an
 % entire copy! -- in ../../texmf.cnf.  That is, if this file is
-% installed in /some/path/to/texlive/2024/texmf-dist/web2c/texmf.cnf,
-% put your custom settings in /some/path/to/texlive/2024/texmf.cnf.
+% installed in /some/path/to/texlive/2025/texmf-dist/web2c/texmf.cnf,
+% put your custom settings in /some/path/to/texlive/2025/texmf.cnf.
 % (Below, we use YYYY in place of the specific year.)
 % 
 % What follows is a super-summary of what this .cnf file can
@@ -87,10 +87,10 @@
 TEXMFHOME = ~/texmf
 
 % TEXMFVAR, where texconfig/updmap/fmtutil store cached runtime data.
-TEXMFVAR = ~/.texlive2024/texmf-var
+TEXMFVAR = ~/.texlive2025/texmf-var
 
 % TEXMFCONFIG, where texconfig/updmap/fmtutil store configuration data.
-TEXMFCONFIG = ~/.texlive2024/texmf-config
+TEXMFCONFIG = ~/.texlive2025/texmf-config
 
 % This is the value manipulated by tlmgr's auxtrees subcommand in the
 % root texmf.cnf. Kpathsea warns about a literally empty string for a
@@ -642,11 +642,15 @@
 % 
 % The programs listed here are as safe as any we know: they either do
 % not write any output files, respect openout_any, or have hard-coded
-% restrictions similar to or higher than openout_any=p.  They also have
-% no features to invoke arbitrary other programs, and no known
-% exploitable bugs.  All to the best of our knowledge.  They also have
-% practical use for being called from TeX.
+% restrictions similar to or higher than openout_any=p.  The output file
+% location is determined according to
+% https://tug.org/texinfohtml/web2c.html#Output-file-location.
 % 
+% They also have no features to invoke arbitrary other programs, and no
+% known exploitable bugs, to the best of our knowledge.
+% 
+% Finally, they also have practical use for being called from TeX.
+% 
 shell_escape_commands = \
 bibtex,bibtex8,\
 extractbb,\
@@ -943,7 +947,7 @@
 % in a texmf.cnf prefered, for example $TEXMFLOCAL/web2c/texmf.cnf.
 command_line_encoding = utf-8
 
-% From TeX Live 2024, the engine for ptex, eptex, platex, and
+% As of TeX Live 2024, the engine for ptex, eptex, platex, and
 % platex-dev is euptex. Therefore the function should be switched off
 % for ptex, eptex, platex and platex-dev.
 command_line_encoding.ptex = none

Modified: branches/stable/source/src/texk/tests/TeXLive/TLConfig.pm
===================================================================
--- branches/stable/source/src/texk/tests/TeXLive/TLConfig.pm	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/tests/TeXLive/TLConfig.pm	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,5 +1,5 @@
 # TeXLive::TLConfig.pm - module exporting configuration values
-# Copyright 2007-2024 Norbert Preining
+# Copyright 2007-2025 Norbert Preining
 # This file is licensed under the GNU General Public License version 2
 # or any later version.
 
@@ -6,7 +6,7 @@
 use strict; use warnings;
 package TeXLive::TLConfig;
 
-my $svnrev = '$Revision: 69783 $';
+my $svnrev = '$Revision: 73776 $';
 my $_modulerevision = ($svnrev =~ m/: ([0-9]+) /) ? $1 : "unknown";
 sub module_revision { return $_modulerevision; }
 
@@ -61,7 +61,7 @@
 
 # the year of our release, will be used in the location of the
 # network packages, and in menu names, and other places.
-our $ReleaseYear = 2024;
+our $ReleaseYear = 2025;
 
 # users can upgrade from this year to the current year; might be the
 # same as the release year, or any number of releases earlier.

Modified: branches/stable/source/src/texk/tests/TeXLive/TLUtils.pm
===================================================================
--- branches/stable/source/src/texk/tests/TeXLive/TLUtils.pm	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/tests/TeXLive/TLUtils.pm	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,5 +1,5 @@
 # TeXLive::TLUtils.pm - the inevitable utilities for TeX Live.
-# Copyright 2007-2024 Norbert Preining, Reinhard Kotucha
+# Copyright 2007-2025 Norbert Preining, Reinhard Kotucha
 # This file is licensed under the GNU General Public License version 2
 # or any later version.
 
@@ -7,7 +7,7 @@
 
 package TeXLive::TLUtils;
 
-my $svnrev = '$Revision: 73556 $';
+my $svnrev = '$Revision: 73770 $';
 my $_modulerevision = ($svnrev =~ m/: ([0-9]+) /) ? $1 : "unknown";
 sub module_revision { return $_modulerevision; }
 

Modified: branches/stable/source/src/texk/web2c/ChangeLog
===================================================================
--- branches/stable/source/src/texk/web2c/ChangeLog	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/ChangeLog	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,3 +1,51 @@
+2025-02-01  Karl Berry  <karl at freefriends.org>
+
+	* tex.ch (24.336): comment out this patch for interactive deletion
+	of \outer tokens, since it has the undesirable side effect of
+	deleting through eof.
+	* tests/outerdel.tex,
+	* tests/outerdelsub.tex: test files and info.
+
+	* tex.ch (save_arith_error): declare in Glob...
+	(30.568): save and restore arith_error around the new
+	check for font scaling to >= 2048pt.
+
+2025-01-29  Andreas Scherer  <https://ascherer.github.io>
+
+	* bibtex.ch,
+	* dvicopy.ch,
+	* dvitype.ch,
+	* gftodvi.ch,
+	* gftopk.ch,
+	* gftype.ch,
+	* mft.ch,
+	* patgen.ch,
+	* pktogf.ch,
+	* pktype.ch,
+	* pltotf.ch,
+	* pooltype.ch,
+	* tftopl.ch,
+	* vftovp.ch,
+	* vptovf.ch: Fill a few gaps in the '@x' lines.
+
+2025-01-28  Karl Berry  <karl at freefriends.org>
+
+	* dvitype.ch: run tests/fix-changefile-lines.py to get chapter and
+	line numbers, and update module numbers.
+
+2025-01-27  Karl Berry  <karl at freefriends.org>
+
+	* tex.ch (30.568, 49.1260): avoid scaling fonts to 2048pt or more.
+	Reports from
+	Igor Liferenko (https://tug.org/pipermail/tex-k/2021-June/003604.html)
+	Tyge Tiessen (https://tug.org/pipermail/tex-k/2022-January/003752.html)
+	and patch from Tyge.
+
+2025-01-27  Karl Berry  <karl at freefriends.org>
+
+	* am/texmf.am (tex-pool.c, mf-pool.c): exit 1 if makecpool failed.
+	(tex-final.ch, mf-final.ch): remove $@ and exit 1 if tie failed.
+
 2025-01-24  Karl Berry  <karl at freefriends.org>
 
 	* configure.ac (KPSE_CHECK_FRAMEWORK, KPSE_FONTCONFIG_FLAGS)

Modified: branches/stable/source/src/texk/web2c/Makefile.in
===================================================================
--- branches/stable/source/src/texk/web2c/Makefile.in	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/Makefile.in	2025-02-15 16:07:47 UTC (rev 951)
@@ -3311,6 +3311,7 @@
 	uptexdir/tests/up-prim.tex uptexdir/tests/up-prim.log \
 	uptexdir/tests/lmr1.tex uptexdir/tests/up-lmr1.log \
 	uptexdir/tests/lmr2.tex uptexdir/tests/up-lmr2.log \
+	uptexdir/tests/catcd.tex uptexdir/tests/up-cat.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 \
@@ -3600,6 +3601,7 @@
 	alephdir/aleph.version $(aleph_tests) \
 	alephdir/tests/al-ofm.tex alephdir/tests/al-ofm.log \
 	alephdir/tests/lmr1.tex alephdir/tests/al-lmr1.log \
+	alephdir/tests/catcd.tex alephdir/tests/al-cat.log \
 	synctexdir/synctex_parser_c-auto.h synctexdir/ChangeLog \
 	synctexdir/README.txt synctexdir/synctex_parser_readme.txt \
 	synctexdir/synctex_parser_version.txt synctexdir/tests \
@@ -3672,7 +3674,7 @@
 	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*.* up-jchwidow.* \
+	up-prim.* up-lmr*.* up-cat.* 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 \
@@ -3712,7 +3714,7 @@
 	omegaware/tests/xspecialhex.* omegaware/tests/yrepeat* \
 	omegaware/tests/*yarabic* $(nodist_aleph_SOURCES) aleph.web \
 	aleph.ch aleph-web2c aleph.p aleph.pool aleph-tangle al-ofm.* \
-	al-lmr*.*
+	al-lmr*.* al-cat.*
 CLEANFILES = $(EXTRA_PROGRAMS) $(EXTRA_LIBRARIES) $(EXTRA_LTLIBRARIES)
 TRIPTRAP_CLEAN = $(am__append_8) $(am__append_18) $(am__append_27) \
 	$(am__append_36) $(am__append_44) $(am__append_60) \
@@ -4568,8 +4570,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-widow.test
+	uptexdir/uptex-lmr.test uptexdir/uptex-cat.test \
+	uptexdir/uptex-noto.test uptexdir/uptex-widow.test
 
 # uppPLtoTF/upTFtoPL
 upweb_tests = uptexdir/upbibtex.test uptexdir/updvitype.test \
@@ -5616,7 +5618,8 @@
 # Aleph Tests
 #
 aleph_tests = alephdir/aleph.test \
-	alephdir/aleph-ofm.test alephdir/aleph-lmr.test
+	alephdir/aleph-ofm.test alephdir/aleph-lmr.test \
+	alephdir/aleph-cat.test
 
 synctex_SOURCES = \
 	synctexdir/synctex_main.c
@@ -21663,7 +21666,7 @@
 	@$(web2c) tex
 
 tex-pool.c: tex.pool texd.h $(makecpool_stamp)
-	$(makecpool) tex >$@ || rm -f $@
+	$(makecpool) tex >$@ || { rm -f $@; exit 1; }
 
 # Tangling TeX
 tex.p tex.pool: tex-tangle
@@ -21673,7 +21676,7 @@
 
 # Generate tex-final.ch
 tex-final.ch: tie$(EXEEXT) $(tex_ch_srcs)
-	$(tie_c) $(tex_ch_srcs)
+	$(tie_c) $(tex_ch_srcs) || { rm -f $@; exit 1; }
 triptest.log: tex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
 tests/outputdir.log tests/tex-closeout.log \
   tests/write18-quote-test.log: tex$(EXEEXT)
@@ -21706,7 +21709,7 @@
 	@$(web2c) mf
 
 mf-pool.c: mf.pool mfd.h $(makecpool_stamp)
-	$(makecpool) mf >$@ || rm -f $@
+	$(makecpool) mf >$@ || { rm -f $@; exit 1; }
 
 # Tangling Metafont
 mf.p mf.pool: mf-tangle
@@ -21716,7 +21719,7 @@
 
 # Generate mf-final.ch
 mf-final.ch: tie$(EXEEXT) $(mf_ch_src)
-	$(tie_c) $(mf_ch_src)
+	$(tie_c) $(mf_ch_src) || { rm -f $@; exit 1; }
 mftraptest.log: mf$(EXEEXT) gftype$(EXEEXT) tftopl$(EXEEXT)
 
 mftrap.diffs: mf$(EXEEXT) gftype$(EXEEXT) tftopl$(EXEEXT)
@@ -21745,7 +21748,7 @@
 	@$(web2c) mflua
 
 mflua-pool.c: mflua.pool mfluad.h $(makecpool_stamp)
-	$(makecpool) mflua >$@ || rm -f $@
+	$(makecpool) mflua >$@ || { rm -f $@; exit 1; }
 
 # Tangling MFLua
 mflua.p mflua.pool: mflua-tangle
@@ -21803,7 +21806,7 @@
 	@$(web2c) mfluajit
 
 mfluajit-pool.c: mfluajit.pool mfluajitd.h $(makecpool_stamp)
-	$(makecpool) mfluajit >$@ || rm -f $@
+	$(makecpool) mfluajit >$@ || { rm -f $@; exit 1; }
 
 # Tangling MFLuaJIT
 mfluajit.p mfluajit.pool: mfluajit-tangle
@@ -22013,7 +22016,7 @@
 	@$(web2c) etex
 
 etex-pool.c: etex.pool etexd.h $(makecpool_stamp)
-	$(makecpool) etex >$@ || rm -f $@
+	$(makecpool) etex >$@ || { rm -f $@; exit 1; }
 
 # Tangling e-TeX
 etex.p etex.pool: etex-tangle
@@ -22053,7 +22056,7 @@
 	@$(web2c) ptex
 
 ptex-pool.c: ptex.pool ptexd.h $(makecpool_stamp)
-	$(makecpool) ptex >$@ || rm -f $@
+	$(makecpool) ptex >$@ || { rm -f $@; exit 1; }
 
 # Tangling pTeX
 ptex.p ptex.pool: ptex-tangle
@@ -22093,7 +22096,7 @@
 	@$(web2c) uptex
 
 uptex-pool.c: uptex.pool uptexd.h $(makecpool_stamp)
-	$(makecpool) uptex >$@ || rm -f $@
+	$(makecpool) uptex >$@ || { rm -f $@; exit 1; }
 
 # Tangling upTeX
 uptex.p uptex.pool: uptex-tangle
@@ -22150,8 +22153,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 \
-	uptexdir/uptex-widow.log: uptex$(EXEEXT)
+	uptexdir/uptex-lmr.log uptexdir/uptex-cat.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)
@@ -22179,7 +22182,7 @@
 	@$(web2c) euptex
 
 euptex-pool.c: euptex.pool euptexd.h $(makecpool_stamp)
-	$(makecpool) euptex >$@ || rm -f $@
+	$(makecpool) euptex >$@ || { rm -f $@; exit 1; }
 
 # Tangling e-upTeX
 euptex.p euptex.pool: euptex-tangle
@@ -22255,7 +22258,7 @@
 pdftex-tangle: tangle$(EXEEXT) pdftexdir/pdftex.web pdftex-final.ch tangle-sh
 	$(pdf_tangle) pdftex pdftex-final
 pdftex-pool.c: pdftex.pool pdftexd.h $(makecpool_stamp)
-	$(makecpool) pdftex >$@ || rm -f $@
+	$(makecpool) pdftex >$@ || { rm -f $@; exit 1; }
 
 # Extract pdftex version
 $(srcdir)/pdftexdir/pdftex_version.h: @MAINTAINER_MODE_TRUE@ pdftexdir/pdftex.web
@@ -22269,7 +22272,7 @@
 
 # Generate pdftex-final.ch
 pdftex-final.ch: tie$(EXEEXT) $(pdftex_ch_srcs)
-	$(tie_c) $(pdftex_ch_srcs)
+	$(tie_c) $(pdftex_ch_srcs) || { rm -f $@; exit 1; }
 
 # Convenience target for making the typeset output; not invoked automatically
 pdftex.pdf: pdftex.tex
@@ -22422,7 +22425,7 @@
 	@$(web2c) xetex
 
 xetex-pool.c: xetex.pool xetexd.h $(makecpool_stamp)
-	$(makecpool) xetex >$@ || rm -f $@
+	$(makecpool) xetex >$@ || { rm -f $@; exit 1; }
 
 xetex.p xetex.pool: xetex-tangle
 	$(xe_tangle) xetex xetex-final
@@ -22439,7 +22442,7 @@
 	  | sed "s/^.*'-/#define XETEX_VERSION \"/;s/'.*$$/\"/" >$@
 
 xetex-final.ch: tie$(EXEEXT) $(xetex_ch_srcs)
-	$(tie_c) $(xetex_ch_srcs)
+	$(tie_c) $(xetex_ch_srcs) || { rm -f $@; exit 1; }
 $(libxetex_a_OBJECTS): $(libxetex_prereq)
 xetexdir/xetex-filedump.log xetexdir/xetex-bug73.log \
   xetexdir/xetex-ctrlsym.log xetexdir/xetex.log \
@@ -22520,7 +22523,7 @@
 aleph-web2c: aleph.p $(web2c_texmf) alephdir/aleph.defines
 	@$(web2c) aleph
 aleph-pool.c: aleph.pool alephd.h $(makecpool_stamp)
-	$(makecpool) aleph >$@ || rm -f $@
+	$(makecpool) aleph >$@ || { rm -f $@; exit 1; }
 
 # Tangling Aleph
 aleph.p aleph.pool: aleph-tangle
@@ -22533,6 +22536,7 @@
 	$(tie_c) aleph.web $(aleph_ch_srcs)
 alephdir/aleph.log \
 	alephdir/aleph-ofm.log alephdir/aleph-lmr.log \
+	alephdir/aleph-cat.log \
 	: aleph$(EXEEXT)
 
 # (end of aleph.am)

Modified: branches/stable/source/src/texk/web2c/NEWS
===================================================================
--- branches/stable/source/src/texk/web2c/NEWS	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/NEWS	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,15 +1,30 @@
 This file records noteworthy changes.  (Public domain.)
 See also */NEWS, */ChangeLog, etc.
 
+

+2025 (for TeX Live 2025)
+* Most engines: new primitive parameter \ignoreprimitiveerror: if set to 1,
+  the error "Infinite glue shrinkage found in box being split"
+  becomes a warning (thus program exit status remains 0). Other values
+  are reserved for future use.
+
 * Most engines: if TeX exits due to the -halt-on-error option,
-write the help message to the log file, as happens without -halt-on-error.
+  write the help message to the log file, as happens without -halt-on-error.
 
+* Most engines: scaling fonts to >= 2048pt now results in an error
+  message, instead of (unhandled) arithmetic overflow or silent changing
+  of the user's value.
+
+* Relevant formats: generate PDF 1.7 by default, not 1.5. (No change in
+  the binaries; done in the .ini files and dvipdfmx.cfg.)
+
 * mf: remove incorrect change of long standing in the Web2c mf.ch file,
-which affects calculation of a few pen polygons in a small way; we don't
-know if any extant fonts are impacted.
+  which affects calculation of a few pen polygons in a small way; we don't
+  know if any extant fonts are impacted.
 
-

-2025 (for TeX Live 2025)
+* (e)uptex: support combining characters with multiple codepoints,
+  Unicode Latin characters and 16-bit OFM Level-0 with
+  new kcatcodes: modifier(20), latin_ucs(14).
 
 

 2024 (for TeX Live 2024, 10 March 2024)

Modified: branches/stable/source/src/texk/web2c/am/texmf.am
===================================================================
--- branches/stable/source/src/texk/web2c/am/texmf.am	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/am/texmf.am	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,7 +1,7 @@
-## $Id: texmf.am 68508 2023-10-10 22:01:41Z karl $
+## $Id: texmf.am 73613 2025-01-27 22:01:50Z karl $
 ## texk/web2c/am/texmf.am: Makefile fragment for TeX and MF.
 ##
-## Copyright 2015-2023 Karl Berry <tex-live at tug.org>
+## Copyright 2015-2025 Karl Berry <tex-live at tug.org>
 ## Copyright 2009-2015 Peter Breitenlohner <tex-live at tug.org>
 ## You may freely use, modify and/or distribute this file.
 
@@ -50,7 +50,7 @@
 	@$(web2c) tex
 
 tex-pool.c: tex.pool texd.h $(makecpool_stamp)
-	$(makecpool) tex >$@ || rm -f $@
+	$(makecpool) tex >$@ || { rm -f $@; exit 1; }
 
 # Tangling TeX
 tex.p tex.pool: tex-tangle
@@ -60,7 +60,7 @@
 
 # Generate tex-final.ch
 tex-final.ch: tie$(EXEEXT) $(tex_ch_srcs)
-	$(tie_c) $(tex_ch_srcs)
+	$(tie_c) $(tex_ch_srcs) || { rm -f $@; exit 1; }
 tex_ch_srcs = \
 	tex.web \
 	tex.ch \
@@ -184,7 +184,7 @@
 	@$(web2c) mf
 
 mf-pool.c: mf.pool mfd.h $(makecpool_stamp)
-	$(makecpool) mf >$@ || rm -f $@
+	$(makecpool) mf >$@ || { rm -f $@; exit 1; }
 
 # Tangling Metafont
 mf.p mf.pool: mf-tangle
@@ -194,7 +194,7 @@
 
 # Generate mf-final.ch
 mf-final.ch: tie$(EXEEXT) $(mf_ch_src)
-	$(tie_c) $(mf_ch_src)
+	$(tie_c) $(mf_ch_src) || { rm -f $@; exit 1; }
 mf_ch_src = \
 	mf.web \
 	mf.ch \

Modified: branches/stable/source/src/texk/web2c/cwebdir/ChangeLog
===================================================================
--- branches/stable/source/src/texk/web2c/cwebdir/ChangeLog	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/cwebdir/ChangeLog	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,3 +1,11 @@
+2025-02-02  Andreas Scherer  <https://ascherer.github.io>
+
+	* ctwill-mini.ch: Avoid several 'Overfull \vbox'es.
+
+2025-01-29  Andreas Scherer  <https://ascherer.github.io>
+
+	* tests/ham.ch: Add line information.
+
 2025-01-15  Andreas Scherer  <https://ascherer.github.io>
 
 	* ctwill-mini.ch: Don't mess with /PageLabels in CTWILL output.

Modified: branches/stable/source/src/texk/web2c/cwebdir/ctwill-mini.ch
===================================================================
--- branches/stable/source/src/texk/web2c/cwebdir/ctwill-mini.ch	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/cwebdir/ctwill-mini.ch	2025-02-15 16:07:47 UTC (rev 951)
@@ -265,6 +265,14 @@
 @$no_xref {CTWILL}25 =$\R\\{make\_xrefs}$@>
 @z
 
+Section 27.
+
+ at x
+        while (q->num>section_xref_switch) {r=q; q=q->xlink;}
+ at y
+        while (q->num>section_xref_switch) {@+r=q; q=q->xlink;@+}
+ at z
+
 Section 36.
 
 @x
@@ -519,6 +527,18 @@
 \hfil\break|next_control>=begin_C|.
 @z
 
+Section 82.
+
+ at x
+  if (p) {
+ at y
+  @+ if (!p) return;
+ at z
+ at x
+  }
+ at y
+ at z
+
 Section 86.
 
 @x
@@ -1314,10 +1334,22 @@
 Section 141.
 
 @x
+  xref_pointer q=(xref_pointer)p->xref; /* pointer to cross-reference being examined */
+ at y
+  @+ xref_pointer q=(xref_pointer)p->xref; /* pointer to cross-reference being examined */
+ at z
+ at x
   while (q != xmem) {
 @y
   while (q != xmem) { @+
 @z
+ at x
+    else if (m==n+def_flag) {
+        q->num=m; return;
+ at y
+    else if (m==n+def_flag) { @+
+        q->num=m; return; @+
+ at z
 
 Section 143.
 
@@ -1416,7 +1448,32 @@
 @y
 @r @ Now here's the |reduce| procedure used in our code for productions,
 @z
+ at x
+  scrap_pointer i; /* pointer into scrap memory */
+ at y
+  @+ scrap_pointer i; /* pointer into scrap memory */
+ at z
+ at x
+  pp--; /* we next say |pp++| */
+ at y
+ at z
 
+Section 198.
+
+ at x
+  switch (k) {
+ at y
+  @+ switch (k) {
+ at z
+
+Section 199.
+
+ at x
+static int tracing=off; /* can be used to show parsing details */
+ at y
+ at + static int tracing=off; /* used to show parsing details */
+ at z
+
 Section 200.
 
 @x
@@ -1427,6 +1484,12 @@
 @%
 @$n {CTWILL}197 \&{short}@>
 @z
+ at x
+}
+ at y
+}
+pp--; /* we next say |pp++| */
+ at z
 
 Section 202.
 

Modified: branches/stable/source/src/texk/web2c/cwebdir/tests/ham.ch
===================================================================
--- branches/stable/source/src/texk/web2c/cwebdir/tests/ham.ch	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/cwebdir/tests/ham.ch	2025-02-15 16:07:47 UTC (rev 951)
@@ -55,7 +55,7 @@
 
 Section 3.
 
- at x
+ at x l.58
 @ Vertices that have already appeared in the path are ``taken,'' and
 @y
 @ Vertices that have already appeared in the path are ``taken,'' and

Added: branches/stable/source/src/texk/web2c/doc/luatex/Makefile
===================================================================
--- branches/stable/source/src/texk/web2c/doc/luatex/Makefile	                        (rev 0)
+++ branches/stable/source/src/texk/web2c/doc/luatex/Makefile	2025-02-15 16:07:47 UTC (rev 951)
@@ -0,0 +1,17 @@
+# This Makefile is public domain. Originally written by Karl Berry, 2025.
+# install luatex manual from Build to Master in TeX Live.
+
+Master = ../../../../../../Master
+dest = $(Master)/texmf-dist/doc/luatex/base/
+lua_source_dir = ../../luatexdir
+
+INSTALL_DATA = cp -p
+
+install:
+	@test -d $(dest) \
+	|| { ls $(Master) echo "dest not directory: $(dest)" >&2; ls $(dest); exit 1; }
+	$(INSTALL_DATA) *.tex $(dest)/
+	$(INSTALL_DATA) *.pdf $(dest)/
+	$(INSTALL_DATA) -r graphics/ $(dest)/
+	$(INSTALL_DATA) $(lua_source_dir)/ChangeLog $(dest)/
+	$(INSTALL_DATA) $(lua_source_dir)/NEWS $(dest)/


Property changes on: branches/stable/source/src/texk/web2c/doc/luatex/Makefile
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/stable/source/src/texk/web2c/doc/luatex/luatex-callbacks.tex
===================================================================
--- branches/stable/source/src/texk/web2c/doc/luatex/luatex-callbacks.tex	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/doc/luatex/luatex-callbacks.tex	2025-02-15 16:07:47 UTC (rev 951)
@@ -933,6 +933,21 @@
 This callback replaces the code that prints the error message. The usual
 interaction after the message is not affected.
 
+\subsection{\cbk {show_ignored_error_message}}
+
+\topicindex{callbacks+errors}
+
+\startfunctioncall
+function()
+end
+\stopfunctioncall
+
+This callback replaces the code that prints the error message
+when \prm {ignoreprimitiveerror} is enabled.
+As before, the usual
+interaction after the message is not affected.
+
+
 \subsection{\cbk {show_lua_error_hook}}
 
 \topicindex{callbacks+errors}

Modified: branches/stable/source/src/texk/web2c/doc/luatex/luatex-enhancements.tex
===================================================================
--- branches/stable/source/src/texk/web2c/doc/luatex/luatex-enhancements.tex	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/doc/luatex/luatex-enhancements.tex	2025-02-15 16:07:47 UTC (rev 951)
@@ -1161,6 +1161,9 @@
 The \prm {vsplit} primitive has to be followed by a specification of the required
 height. As alternative for the \type {to} keyword you can use \type {upto} to get
 a split of the given size but result has the natural dimensions then.
+If \prm {ignoreprimitiveerror} = 1 , the error
+"Infinite glue shrinkage found in box being split" that occurs
+when vsplit-ting a box containing infinite negative glue is turned into a warning.
 
 \stopsubsection
 

Modified: branches/stable/source/src/texk/web2c/doc/luatex/luatex-fonts.tex
===================================================================
--- branches/stable/source/src/texk/web2c/doc/luatex/luatex-fonts.tex	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/doc/luatex/luatex-fonts.tex	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,4 +1,4 @@
-% language=uk engine=luatex
+% language=us engine=luatex runpath=texruns:manuals/luatex
 
 \environment luatex-style
 
@@ -906,6 +906,28 @@
 
 \stopsubsection
 
+\startsubsection[title={\type {\tracinglostchars}}]
+
+This tracer reports missing characters. By design we delay this till the backend
+included them, when math typesetting needs them, or when a virtual font is
+created (1, 2, 3). Per request of the \LATEX\ team we have two extra options that
+report in an earlier stage i.e.\ when the glyphs are packaged or processed during
+line breaking (4 and 5).
+
+\starttabulate[|r|l|]
+    \DB     \BC effect \NC \NR
+    \TB
+    \NC 0   \NC nothing \NC \NR
+    \NC 1   \NC warning only to log file \NC \NR
+    \NC 2   \NC warning and force terminal \NC \NR
+    \NC 3   \NC error \NC \NR
+    \NC 4   \NC early warning (and force terminal) \NC \NR
+    \NC > 4 \NC early error \NC \NR
+    \LL
+\stoptabulate
+
+\stopsubsection
+
 \stopsection
 
 \stopchapter

Modified: branches/stable/source/src/texk/web2c/doc/luatex/luatex-lua.tex
===================================================================
--- branches/stable/source/src/texk/web2c/doc/luatex/luatex-lua.tex	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/doc/luatex/luatex-lua.tex	2025-02-15 16:07:47 UTC (rev 951)
@@ -570,6 +570,12 @@
     If the command ran ok, then the return value is the exit status of the
     command. Otherwise, it will return the two values \type {nil} and \type
     {error}.
+
+    \type {os.spawn()} takes an optional second argument, a table of key-value
+    pairs for the environment of the spawned process. Note that if you do pass
+    this table, it will be used as the \notabene {complete} environment for the
+    spawned process, so you'll likely want to start from \type {os.env} and add
+    or remove keys as needed.
 \stopitem
 
 \startitem

Modified: branches/stable/source/src/texk/web2c/doc/luatex/luatex-modifications.tex
===================================================================
--- branches/stable/source/src/texk/web2c/doc/luatex/luatex-modifications.tex	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/doc/luatex/luatex-modifications.tex	2025-02-15 16:07:47 UTC (rev 951)
@@ -1164,6 +1164,10 @@
 an box, paragraphs with only an indent and directions are handled as paragraphs
 with content.
 
+By default paragraphs before a display equation containing dir nodes are never ignored.
+Changing that could break existing documents, but when you set \lpr {mathemptydisplaymode}
+to~\type {1} empty paragraphs before a display equation will be ignored.
+
 \stopsubsection
 
 \startsubsection[title={Controlling glue with \lpr {breakafterdirmode}}]

Modified: branches/stable/source/src/texk/web2c/doc/luatex/luatex-tex.tex
===================================================================
--- branches/stable/source/src/texk/web2c/doc/luatex/luatex-tex.tex	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/doc/luatex/luatex-tex.tex	2025-02-15 16:07:47 UTC (rev 951)
@@ -1970,6 +1970,14 @@
      in \DVI\ output mode, if true abort run when the number of pages exceeds 65535. 
      This is the default behaviour. If false, the run goes on as is in \TEX.
 \NC \NR
+\NC \type{texlua_img} \NC boolean \NC
+\NC 
+     if true, allows access to the \type {img} library in \TEXLUA\ mode. If
+     false (the default), the \type {img} library is not available in \TEXLUA\
+     mode (as it was unconditionally for \LUATEX\ versions prior to 1.22.0).
+     Note that this setting is {\bf experimental} and subject to be removed at
+     any time, without notice.
+\NC \NR
 \LL
 \stoptabulate
 
@@ -2429,6 +2437,7 @@
 
 \libindex{get_next}
 \libindex{put_next}
+\libindex{unchecked_put_next}
 
 There is a (for now) experimental putter:
 
@@ -2444,7 +2453,12 @@
 \stoptyping
 
 When we scan \type {wxyz!} we get \type {yzwx!} back. The argument is either a table
-with tokens or a list of tokens. The \type {token.expand} function will trigger
+with tokens or a list of tokens. The new function \type {token.unchecked_put_next}
+has been added per request of the \LATEX\ team. It skips this error checking and
+follows a different code path. It assumes that a valid token user datum is
+passed and can crash the engine otherwise.
+
+The \type {token.expand} function will trigger
 expansion but what happens really depends on what you're doing where.
 
 \stopsubsection

Modified: branches/stable/source/src/texk/web2c/doc/luatex/luatex.pdf
===================================================================
(Binary files differ)

Modified: branches/stable/source/src/texk/web2c/doc/luatex/luatex.tex
===================================================================
--- branches/stable/source/src/texk/web2c/doc/luatex/luatex.tex	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/doc/luatex/luatex.tex	2025-02-15 16:07:47 UTC (rev 951)
@@ -73,7 +73,7 @@
 \startdocument
   [manual=Lua\TeX,
    status=stable,
-   version=1.20]
+   version=1.21]
 
 \startnotmode[*export]
     \component luatex-titlepage

Modified: branches/stable/source/src/texk/web2c/etexdir/ChangeLog
===================================================================
--- branches/stable/source/src/texk/web2c/etexdir/ChangeLog	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/etexdir/ChangeLog	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,3 +1,7 @@
+2025-01-27  Karl Berry  <karl at freefriends.org>
+
+	* am/etex.am (etex-pool.c): exit 1 if makecpool failed.
+
 2024-04-14  TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
 
 	* etriptest.test:

Modified: branches/stable/source/src/texk/web2c/etexdir/am/etex.am
===================================================================
--- branches/stable/source/src/texk/web2c/etexdir/am/etex.am	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/etexdir/am/etex.am	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,7 +1,7 @@
-## $Id: etex.am 61575 2022-01-11 22:47:10Z karl $
+## $Id: etex.am 73613 2025-01-27 22:01:50Z karl $
 ## texk/web2c/etexdir/am/etex.am: Makefile fragment for e-TeX.
 ##
-## Copyright 2015-2022 Karl Berry <tex-live at tug.org>
+## Copyright 2015-2025 Karl Berry <tex-live at tug.org>
 ## Copyright 2009-2015 Peter Breitenlohner <tex-live at tug.org>
 ## You may freely use, modify and/or distribute this file.
 
@@ -34,7 +34,7 @@
 	@$(web2c) etex
 
 etex-pool.c: etex.pool etexd.h $(makecpool_stamp)
-	$(makecpool) etex >$@ || rm -f $@
+	$(makecpool) etex >$@ || { rm -f $@; exit 1; }
 
 # Tangling e-TeX
 etex.p etex.pool: etex-tangle

Modified: branches/stable/source/src/texk/web2c/lib/ChangeLog
===================================================================
--- branches/stable/source/src/texk/web2c/lib/ChangeLog	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/lib/ChangeLog	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,3 +1,8 @@
+2025-02-04  Hironori Kitagawa  <h_kitagawa2001 at yahoo.co.jp>
+
+	* texmfmp.c: Avoid segmentation fault.
+	https://github.com/texjporg/tex-jp-build/issues/174
+
 2025-01-01  Akira Kakuto  <kakuto at jcom.zaq.ne.jp>
 
 	* printversion.c: Update copyright year.

Modified: branches/stable/source/src/texk/web2c/lib/texmfmp.c
===================================================================
--- branches/stable/source/src/texk/web2c/lib/texmfmp.c	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/lib/texmfmp.c	2025-02-15 16:07:47 UTC (rev 951)
@@ -1019,7 +1019,8 @@
         string new_arg;
         is_terminalUTF8(); /* To call get_terminal_enc(). return value is not used */
         new_arg = ptenc_from_utf8_string_to_internal_enc(argv[1]);
-        dump_name = argv[1] + 1; argv[1] = new_arg;
+        dump_name = argv[1] + 1;
+        if (new_arg) argv[1] = new_arg;
 #else
         dump_name = argv[1] + 1;
 #endif

Modified: branches/stable/source/src/texk/web2c/pdftexdir/ChangeLog
===================================================================
--- branches/stable/source/src/texk/web2c/pdftexdir/ChangeLog	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/pdftexdir/ChangeLog	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,3 +1,26 @@
+2025-02-11  Max Chernoff  <tex at maxchernoff.ca>
+
+	* pdftex.web (scale_image): no warning if both resolutions are zero.
+	https://tug.org/pipermail/pdftex/2025-February/009441.html
+
+2025-02-02  Karl Berry  <karl at freefriends.org>
+
+	* pdftex.ch: try to give original files and line numbers for changes.
+
+2025-01-31  Karl Berry  <karl at freefriends.org>
+
+	* pdftex.ch (l.1891): have print_ignored_error respect
+	--file-line-error; noted by Martin Ruckert.
+	* pdftex.web (etex_int_pars): add eTeX_states, not
+	eTeX_state_code, as it was before; noted by Martin Ruckert.
+
+2025-01-27  Karl Berry  <karl at freefriends.org>
+
+	* NEWS: 2025 font scaling entry; belated 2024 cross-engine entry.
+
+	* am/pdftex.am (pdftex-pool.c): exit 1 if makecpool failed.
+	(pdftex-final.ch): remove $@ and exit 1 if tie failed.
+
 2025-01-25  Karl Berry  <karl at freefriends.org>
 
         * NEWS,
@@ -16,6 +39,7 @@
 	(Generate all \eTeX): define it.
 	(Cases for |print_param|): print it.
 	Request from Frank Mittelbach, 22 Jul 2024 22:37:26 (private mail).
+	* NEWS: mention this.
 
 2025-01-23  Thanh Han The  <hanthethanh at gmail.com>
 

Modified: branches/stable/source/src/texk/web2c/pdftexdir/NEWS
===================================================================
--- branches/stable/source/src/texk/web2c/pdftexdir/NEWS	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/pdftexdir/NEWS	2025-02-15 16:07:47 UTC (rev 951)
@@ -4,13 +4,20 @@
     if \pdfmajorversion >= 2, PTEX.Fullbanner and other dictionary
     entry names use _ instead of ., as in "PTEX_Fullbanner".
   - new primitive \ignoreprimitiveerror, enabled with -etex: if set
-    to 1, the error "Infinite glue shrinkage" becomes a warning
-    (exit status remains 0). Other values reserved for future use.
+    to 1, the error "Infinite glue shrinkage found in box being split"
+    becomes a warning (thus program exit status remains 0). Other values
+    are reserved for future use. (cross-engine)
+  - if TeX exits due to the -halt-on-error option, write the help
+    message to the log file, as happens without -halt-on-error. (cross-engine)
+
 - bugfixes:
   - don't omit real spaces just because the font changes.
   - increase tolerance for detecting interword spaces in overfull lines.
   - ignore tiny resolutions like 1x1 embedded in images instead of
     exceeding \maxdimen.
+  - scaling fonts to >= 2048pt now results in an error message, instead
+    of (unhandled) arithmetic overflow or silent changing of the user's
+    value. (cross-engine)
 
 -----------------------------------------------------------------------------
 pdfTeX 3.141592653-2.6-1.40.26 (TeX Live 2024) (March 10, 2024)

Modified: branches/stable/source/src/texk/web2c/pdftexdir/am/pdftex.am
===================================================================
--- branches/stable/source/src/texk/web2c/pdftexdir/am/pdftex.am	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/pdftexdir/am/pdftex.am	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,7 +1,7 @@
-## $Id: pdftex.am 70173 2024-02-26 15:53:56Z karl $
+## $Id: pdftex.am 73613 2025-01-27 22:01:50Z karl $
 ## texk/web2c/pdftexdir/am/pdftex.am: Makefile fragment for pdfTeX.
 ##
-## Copyright 2016-2024 Karl Berry <tex-live at tug.org>
+## Copyright 2016-2025 Karl Berry <tex-live at tug.org>
 ## Copyright 2009-2015 Peter Breitenlohner <tex-live at tug.org>
 ## You may freely use, modify and/or distribute this file.
 
@@ -51,7 +51,7 @@
 pdftex-tangle: tangle$(EXEEXT) pdftexdir/pdftex.web pdftex-final.ch tangle-sh
 	$(pdf_tangle) pdftex pdftex-final
 pdftex-pool.c: pdftex.pool pdftexd.h $(makecpool_stamp)
-	$(makecpool) pdftex >$@ || rm -f $@
+	$(makecpool) pdftex >$@ || { rm -f $@; exit 1; }
 
 # Extract pdftex version
 $(srcdir)/pdftexdir/pdftex_version.h: @MAINTAINER_MODE_TRUE@ pdftexdir/pdftex.web
@@ -65,7 +65,7 @@
 
 # Generate pdftex-final.ch
 pdftex-final.ch: tie$(EXEEXT) $(pdftex_ch_srcs)
-	$(tie_c) $(pdftex_ch_srcs)
+	$(tie_c) $(pdftex_ch_srcs) || { rm -f $@; exit 1; }
 pdftex_ch_srcs = \
 	pdftexdir/pdftex.web \
 	pdftexdir/tex.ch0 \

Modified: branches/stable/source/src/texk/web2c/pdftexdir/pdftex.ch
===================================================================
--- branches/stable/source/src/texk/web2c/pdftexdir/pdftex.ch	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/pdftexdir/pdftex.ch	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,4 +1,4 @@
-% Copyright 1996-2023 Han The Thanh, <thanh at pdftex.org>
+% Copyright 1996-2025 Han The Thanh, <thanh at pdftex.org>
 %
 % This file is part of pdfTeX.
 %
@@ -14,18 +14,14 @@
 %
 % You should have received a copy of the GNU General Public License along with
 % this program.  If not, see <http://www.gnu.org/licenses/>.
-%
- at x [0.0] l.83 - WEAVE: we want the whole file
+
+ at x tex.ch l.60 - tell weave we want the whole file
 \let\maybe=\iffalse
 @y 83
 \let\maybe=\iftrue
 @z
 
-% Change file to assist in creating the web2c-specific change file.
-% This one resolves inconsistencies between tex.ch and tex.ech.
-% Public domain.
-
- at x [1] m.2 l.188 - banner
+ at x tex.ch l.76 - pdftex banner
 @d banner==TeX_banner
 @d banner_k==TeX_banner_k
 @y
@@ -33,7 +29,16 @@
 @d banner_k==pdfTeX_banner
 @z
 
- at x [16.215] - e-TeX last_node_type
+ at x pdftex.web l.1891 - have print_ignored_error respect --file-line-error
+  print_nl("ignored error: "); print(#);
+ at y
+  if file_line_error_style_p then print_file_line
+  else print_nl("");
+  print("ignored error: "); print(#);
+ at z
+
+% See also tex.ch l.1204, etex.ch l.2226. Not sure what's going on here.
+ at x pdftex.web l.28025 - restore e-TeX last_node_type removed in tex.ch
 last_glue:=max_halfword; last_penalty:=0; last_kern:=0;
 @y
 last_glue:=max_halfword; last_penalty:=0; last_kern:=0;
@@ -40,7 +45,7 @@
 last_node_type:=-1;
 @z
 
- at x
+ at x tex.ch l.1228 - table sizes [see also pdftex.web l.5194]
 @d frozen_null_font=frozen_control_sequence+11
   {permanent `\.{\\nullfont}'}
 @y
@@ -48,7 +53,7 @@
   {permanent `\.{\\nullfont}'}
 @z
 
- at x [17.236] l.4960 - first web2c, then e-TeX additional integer parameters
+ at x tex.ch l.1274 - web2c, then e-TeX, then pdftex integer parameters
 @d int_pars=web2c_int_pars {total number of integer parameters}
 @#
 @d etex_int_base=tex_int_pars {base for \eTeX's integer parameters}
@@ -57,13 +62,13 @@
 @z
 
 % start of tex.pch
- at x (MLTeX) l. 12945
+ at x (MLTeX) l.12945
       begin i := char_tag(char_info(f)(c));
 @y
       begin i := char_tag(orig_char_info(f)(c));
 @z
 
- at x (MLTeX) l. 14640
+ at x (MLTeX) l.14640
 @d is_valid_char(#)==((font_bc[f] <= #) and (# <= font_ec[f]) and
                       char_exists(char_info(f)(#)))
 @y
@@ -71,7 +76,7 @@
                       char_exists(orig_char_info(f)(#)))
 @z
 
- at x (MLTeX) l. 14678
+ at x (MLTeX) l.14678
 function get_charwidth(f: internal_font_number; c: eight_bits): scaled;
 begin
     if is_valid_char(c) then
@@ -122,13 +127,13 @@
 @z
 
 
- at x (MLTeX) l. 17413
+ at x (MLTeX) l.17413
 label reswitch, move_past, fin_rule, next_p;
 @y
 label reswitch, move_past, fin_rule, next_p, found, continue;
 @z
 
- at x (MLTeX) l. 17462
+ at x (MLTeX) l.17462
   if is_valid_char(c) then
       output_one_char(c)
   else
@@ -145,26 +150,33 @@
 continue:
 @z
 
- at x [49.1259]
+% this @x code is modified from tex.web by tex.ch.
+ at x tex.ch l.3447 - omit block if pdf_font_step[f] nonzero; preserve indentation
     begin if s>0 then
       begin if s=font_size[f] then goto common_ending;
       end
-    else if font_size[f]=xn_over_d(font_dsize[f],-s,1000) then
-      goto common_ending;
+    else begin arith_error:=false;
+      if font_size[f]=xn_over_d(font_dsize[f],-s,1000)
+      then if not arith_error
+        then goto common_ending;
+      end;
     end
 @y
-    begin
-    if pdf_font_step[f] = 0 then begin
-       if s>0 then
-         begin if s=font_size[f] then goto common_ending;
-         end
-       else if font_size[f]=xn_over_d(font_dsize[f],-s,1000) then
-         goto common_ending;
-       end
+  begin {preserved}
+  if pdf_font_step[f] = 0 then begin
+    if s>0 then
+      begin if s=font_size[f] then goto common_ending;
+      end
+    else begin arith_error:=false;
+      if font_size[f]=xn_over_d(font_dsize[f],-s,1000)
+      then if not arith_error
+        then goto common_ending;
+      end;
     end
+  end
 @z
 
- at x (WEB2C!)
+ at x tex.ch l.3989 - more things to dump
 param_base:=xmalloc_array(integer, font_max);
 
 undump_things(font_check[null_font], font_ptr+1-null_font);
@@ -231,7 +243,7 @@
 undump_things(font_check[null_font], font_ptr+1-null_font);
 @z
 
- at x [51.1]
+ at x tex.ch l.4196 - more bounds to set
   setup_bound_var (0)('hash_extra')(hash_extra);
   setup_bound_var (10000)('expand_depth')(expand_depth);
 
@@ -241,7 +253,7 @@
   setup_bound_var (72)('pk_dpi')(pk_dpi);
 @z
 
- at x [51.2]
+ at x tex.ch l.4229 - more constants to check
   const_chk (hash_extra);
   if error_line > ssup_error_line then error_line := ssup_error_line;
 @y
@@ -253,7 +265,7 @@
   if error_line > ssup_error_line then error_line := ssup_error_line;
 @z
 
- at x [51.1332] l.24203 (ca.) texarray
+ at x tex.ch l.4238 - more arrays to xmalloc
   line_stack:=xmalloc_array (integer, max_in_open);
 @y
   line_stack:=xmalloc_array (integer, max_in_open);
@@ -262,7 +274,7 @@
   if_stack:=xmalloc_array (pointer, max_in_open);
 @z
 
- at x [51.3]
+ at x tex.ch l.4245 - still more arrays to xmalloc
   hyph_link :=xmalloc_array (hyph_pointer, hyph_size);
 @y
   hyph_link :=xmalloc_array (hyph_pointer, hyph_size);
@@ -275,7 +287,7 @@
   pdf_os_objoff:=xmalloc_array (integer, pdf_os_max_objs);
 @z
 
- at x [51.1337] l.24371 (ca.) texarray
+ at x tex.ch l.4356 - more hyphenation initializations
   trie_root:=0; trie_c[0]:=si(0); trie_ptr:=0;
 @y
   trie_root:=0; trie_c[0]:=si(0); trie_ptr:=0;
@@ -283,7 +295,7 @@
 @z
 
 
- at x (WEB2C!)
+ at x tex.ch l.4381 - more arrays to xmallox
   param_base:=xmalloc_array(integer, font_max);
 
   font_ptr:=null_font; fmem_ptr:=7;
@@ -350,8 +362,7 @@
 make_pdftex_banner;
 @z
 
-% i, j, q, and r are unused by TeX but required for pdfTeX
- at x [53.1348] (do_extension)
+ at x tex.ch l.4438 (do_extension) - i, j, q, r unused by TeX, needed by pdfTeX
 var k:integer; {all-purpose integers}
 @!p:pointer; {all-purpose pointers}
 @y
@@ -359,13 +370,13 @@
 @!p,@!q,@!r:pointer; {all-purpose pointers}
 @z
 
- at x [53a.1379] l.??? -etex command line switch
+ at x etex.ch l.3182 -etex command line xswitch
 @!init if (buffer[loc]="*")and(format_ident=" (INITEX)") then
 @y
 @!init if (etex_p or(buffer[loc]="*"))and(format_ident=" (INITEX)") then
 @z
 
- at x [53a.1379] l.??? -etex command line switch
+ at x etex.ch l.3185 -etex command line switch
   incr(loc); eTeX_mode:=1; {enter extended mode}
 @y
   if (buffer[loc]="*") then incr(loc);
@@ -372,7 +383,7 @@
   eTeX_mode:=1; {enter extended mode}
 @z
 
- at x [53a.1383] l.??? -etex command line switch
+ at x etex.ch l.3224 -etex command line switch
 @!eTeX_mode: 0..1; {identifies compatibility and extended mode}
 @y
 @!eTeX_mode: 0..1; {identifies compatibility and extended mode}
@@ -379,13 +390,13 @@
 @!etex_p: boolean; {was the -etex option specified}
 @z
 
- at x [53a.1391] l.??? texarray
+ at x etex.ch l.3302 - use pointer for array
 @!eof_seen : array[1..max_in_open] of boolean; {has eof been seen?}
 @y
 @!eof_seen : ^boolean; {has eof been seen?}
 @z
 
- at x [53a.1506] l.??? texarray
+ at x etex.ch l.4842 - use pointers for arrays
 @!grp_stack : array[0..max_in_open] of save_pointer; {initial |cur_boundary|}
 @!if_stack : array[0..max_in_open] of pointer; {initial |cond_ptr|}
 @y
@@ -393,12 +404,12 @@
 @!if_stack : ^pointer; {initial |cond_ptr|}
 @z
 
- at x [53a.1587] l.??? texarray
+ at x etex.ch l.6244 - hyphenation initializations done elsewhere
 hyph_root:=0; hyph_start:=0;
 @y
 @z
 
- at x [54/web2c.???] l.??? needed earlier
+ at x tex.ch l.4858 - effective_char function needed earlier
 replacement, but always existing character |font_bc[f]|.
 @^inner loop@>
 
@@ -412,7 +423,7 @@
 function effective_char(@!err_p:boolean;
 @z
 
- at x
+ at x tex.ch l.4958 - pdftex character substitutions
 @ The global variables for the code to substitute a virtual character
 @y
 @ \pdfTeX's |pdf_hlist_out| uses a similar, but slightly modified code
@@ -429,7 +440,7 @@
 @ The global variables for the code to substitute a virtual character
 @z
 
- at x
+ at x tex.ch l.5071 - more pdftex substitution
 @ Dumping ML\TeX-related material.  This is just the flag in the
 @y
 @ \pdfTeX's |pdf_hlist_out| uses a similar, but slightly modified code

Modified: branches/stable/source/src/texk/web2c/pdftexdir/pdftex.web
===================================================================
--- branches/stable/source/src/texk/web2c/pdftexdir/pdftex.web	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/pdftexdir/pdftex.web	2025-02-15 16:07:47 UTC (rev 951)
@@ -5725,7 +5725,7 @@
 @d saving_hyph_codes_code=etex_int_base+8 {save hyphenation codes for languages}
 @d ignore_primitive_error_code=etex_int_base+9 {ignore some primitive/engine errors}
 @d eTeX_state_code=etex_int_base+10 {\eTeX\ state variables}
- at d etex_int_pars=eTeX_state_code+eTeX_state_code {total number of \eTeX's integer parameters}
+ at d etex_int_pars=eTeX_state_code+eTeX_states {total number of \eTeX's integer parameters}
 @#
 @d int_pars=etex_int_pars {total number of integer parameters}
 @d count_base=int_base+int_pars {256 user \.{\\count} registers}
@@ -34451,7 +34451,11 @@
     end;
     if (x <= 0) or (y <= 0) or (xr < 0) or (yr < 0) then
         pdf_error("ext1", "invalid image dimensions");
-    if (x / one_inch >= xr) or (y / one_inch >= yr) then begin
+    if (xr = 0) and (yr = 0) then begin
+        {If both resolutions are zero, that suggests that the resolution data
+         is missing, so we should never issue a warning.}
+    end
+    else if (x / one_inch >= xr) or (y / one_inch >= yr) then begin
         {It's better to warn and ignore too-small resolutions given in
          the image file, usually 1dpi x 1dpi, to avoid arithmetic overflow.}
         xr := 0;

Modified: branches/stable/source/src/texk/web2c/silent-sh.in
===================================================================
--- branches/stable/source/src/texk/web2c/silent-sh.in	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/silent-sh.in	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,7 +1,9 @@
 #! @SHELL@
 # silent-sh: shell script to invoke tie etc in silent rules.
+# $Id: silent-sh.in 73613 2025-01-27 22:01:50Z karl $
 #
-#   Copyright (C) 2012 Peter Breitenlohner <tex-live at tug.org>
+#   Copyright 2015-2025 Karl Berry <tex-live at tug.org>
+#   Copyright 2012-2015 Peter Breitenlohner <tex-live at tug.org>
 #
 #   This file is free software; the copyright holder
 #   gives unlimited permission to copy and/or distribute it,
@@ -9,7 +11,7 @@
 #
 # Used as, e.g.,
 #	tex-final.ch: tie$(EXEEXT) $(tex_ch_srcs)
-#		$(tie) -c $@ $(tex_ch_srcs)
+#		$(tie) -c $@ $(tex_ch_srcs) || { rm -f $@; exit 1; }
 # with
 #	tie = $(tie_silent)WEBINPUTS=.:$(srcdir) $(buildenv) $(TIE)
 # and

Modified: branches/stable/source/src/texk/web2c/tests/fix-changefile-lines.py
===================================================================
--- branches/stable/source/src/texk/web2c/tests/fix-changefile-lines.py	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/tests/fix-changefile-lines.py	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-# $Id: fix-changefile-lines.py 73541 2025-01-21 15:47:36Z ascherer $
+# $Id: fix-changefile-lines.py 73710 2025-02-03 18:32:15Z ascherer $
 # Applied to tex.ch and mf.ch on 2024-06-03, following the request at:
 # https://tug.org/pipermail/tex-k/2024-June/004064.html
 """
@@ -58,8 +58,8 @@
             sys.exit(1)
 
     def next_line(self):
-        """Returns the triple of current part, section and line numbers, as
-        well as the next line. Updates part and section numbers.
+        """Returns the triple of current part, section and line numbers,
+        as well as the next line. Updates part and section numbers.
         """
         if self._pos >= len(self._web_lines):
             return None
@@ -139,8 +139,8 @@
 
     def find_match_in_web(self, web_reader):
         """Find the match for the current change chunk in the WEB file.
-        Returns the part, section, and line number of the first match line in
-        the WEB file.
+        Returns the part, section, and line number of the first match line
+        in the WEB file.
         """
         while True:
             try:

Added: branches/stable/source/src/texk/web2c/tests/fonttoobig-ds1024.pl
===================================================================
--- branches/stable/source/src/texk/web2c/tests/fonttoobig-ds1024.pl	                        (rev 0)
+++ branches/stable/source/src/texk/web2c/tests/fonttoobig-ds1024.pl	2025-02-15 16:07:47 UTC (rev 951)
@@ -0,0 +1,981 @@
+(FAMILY CMR)
+(FACE O 352)
+(CODINGSCHEME TEX TEXT)
+(DESIGNSIZE R 1024.0)
+(comment This is cmr10 with designsize changed to 1024, for fonttoobig.tex.)
+(COMMENT DESIGNSIZE IS IN POINTS)
+(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+(SEVENBITSAFEFLAG TRUE)
+(FONTDIMEN
+   (SLANT R 0.0)
+   (SPACE R 0.333334)
+   (STRETCH R 0.166667)
+   (SHRINK R 0.111112)
+   (XHEIGHT R 0.430555)
+   (QUAD R 1.000003)
+   (EXTRASPACE R 0.111112)
+   )
+(LIGTABLE
+   (LABEL O 40)
+   (KRN C l R -0.277779)
+   (KRN C L R -0.319446)
+   (STOP)
+   (LABEL C f)
+   (LIG C i O 14)
+   (LIG C f O 13)
+   (LIG C l O 15)
+   (KRN O 47 R 0.077779)
+   (KRN O 77 R 0.077779)
+   (KRN O 41 R 0.077779)
+   (KRN O 51 R 0.077779)
+   (KRN O 135 R 0.077779)
+   (STOP)
+   (LABEL O 13)
+   (LIG C i O 16)
+   (LIG C l O 17)
+   (KRN O 47 R 0.077779)
+   (KRN O 77 R 0.077779)
+   (KRN O 41 R 0.077779)
+   (KRN O 51 R 0.077779)
+   (KRN O 135 R 0.077779)
+   (STOP)
+   (LABEL O 140)
+   (LIG O 140 O 134)
+   (STOP)
+   (LABEL O 47)
+   (LIG O 47 O 42)
+   (KRN O 77 R 0.111112)
+   (KRN O 41 R 0.111112)
+   (STOP)
+   (LABEL O 55)
+   (LIG O 55 O 173)
+   (STOP)
+   (LABEL O 173)
+   (LIG O 55 O 174)
+   (STOP)
+   (LABEL O 41)
+   (LIG O 140 O 74)
+   (STOP)
+   (LABEL O 77)
+   (LIG O 140 O 76)
+   (STOP)
+   (LABEL C k)
+   (LABEL C v)
+   (KRN C a R -0.055555)
+   (LABEL C w)
+   (KRN C e R -0.027779)
+   (KRN C a R -0.027779)
+   (KRN C o R -0.027779)
+   (KRN C c R -0.027779)
+   (STOP)
+   (LABEL C P)
+   (KRN C A R -0.083334)
+   (LABEL C y)
+   (KRN C o R -0.027779)
+   (KRN C e R -0.027779)
+   (KRN C a R -0.027779)
+   (KRN O 56 R -0.083334)
+   (KRN O 54 R -0.083334)
+   (STOP)
+   (LABEL C F)
+   (LABEL C V)
+   (LABEL C W)
+   (KRN C o R -0.083334)
+   (KRN C e R -0.083334)
+   (KRN C u R -0.083334)
+   (KRN C r R -0.083334)
+   (KRN C a R -0.083334)
+   (KRN C A R -0.111112)
+   (LABEL C K)
+   (LABEL C X)
+   (KRN C O R -0.027779)
+   (KRN C C R -0.027779)
+   (KRN C G R -0.027779)
+   (KRN C Q R -0.027779)
+   (STOP)
+   (LABEL C T)
+   (KRN C y R -0.027779)
+   (LABEL C Y)
+   (KRN C e R -0.083334)
+   (KRN C o R -0.083334)
+   (KRN C r R -0.083334)
+   (KRN C a R -0.083334)
+   (KRN C A R -0.083334)
+   (KRN C u R -0.083334)
+   (STOP)
+   (LABEL C D)
+   (LABEL C O)
+   (KRN C X R -0.027779)
+   (KRN C W R -0.027779)
+   (KRN C A R -0.027779)
+   (KRN C V R -0.027779)
+   (KRN C Y R -0.027779)
+   (STOP)
+   (LABEL C h)
+   (LABEL C m)
+   (LABEL C n)
+   (KRN C t R -0.027779)
+   (KRN C u R -0.027779)
+   (KRN C b R -0.027779)
+   (KRN C y R -0.027779)
+   (KRN C v R -0.027779)
+   (KRN C w R -0.027779)
+   (STOP)
+   (LABEL C c)
+   (KRN C h R -0.027779)
+   (KRN C k R -0.027779)
+   (STOP)
+   (LABEL C b)
+   (LABEL C o)
+   (LABEL C p)
+   (KRN C e R 0.027779)
+   (KRN C o R 0.027779)
+   (KRN C x R -0.027779)
+   (KRN C d R 0.027779)
+   (KRN C c R 0.027779)
+   (KRN C q R 0.027779)
+   (LABEL C a)
+   (KRN C v R -0.027779)
+   (KRN C j R 0.055555)
+   (LABEL C t)
+   (KRN C y R -0.027779)
+   (LABEL C u)
+   (KRN C w R -0.027779)
+   (STOP)
+   (LABEL C A)
+   (LABEL C R)
+   (KRN C t R -0.027779)
+   (KRN C C R -0.027779)
+   (KRN C O R -0.027779)
+   (KRN C G R -0.027779)
+   (KRN C U R -0.027779)
+   (KRN C Q R -0.027779)
+   (LABEL C L)
+   (KRN C T R -0.083334)
+   (KRN C Y R -0.083334)
+   (KRN C V R -0.111112)
+   (KRN C W R -0.111112)
+   (STOP)
+   (LABEL C g)
+   (KRN C j R 0.027779)
+   (STOP)
+   (LABEL C I)
+   (KRN C I R 0.027779)
+   (STOP)
+   )
+(CHARACTER O 0
+   (CHARWD R 0.625002)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 1
+   (CHARWD R 0.833336)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 2
+   (CHARWD R 0.777781)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 3
+   (CHARWD R 0.694446)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 4
+   (CHARWD R 0.666669)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 5
+   (CHARWD R 0.750002)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 6
+   (CHARWD R 0.722224)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 7
+   (CHARWD R 0.777781)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 10
+   (CHARWD R 0.722224)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 11
+   (CHARWD R 0.777781)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 12
+   (CHARWD R 0.722224)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 13
+   (CHARWD R 0.583336)
+   (CHARHT R 0.694445)
+   (CHARIC R 0.077779)
+   (COMMENT
+      (LIG C i O 16)
+      (LIG C l O 17)
+      (KRN O 47 R 0.077779)
+      (KRN O 77 R 0.077779)
+      (KRN O 41 R 0.077779)
+      (KRN O 51 R 0.077779)
+      (KRN O 135 R 0.077779)
+      )
+   )
+(CHARACTER O 14
+   (CHARWD R 0.555557)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 15
+   (CHARWD R 0.555557)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 16
+   (CHARWD R 0.833336)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 17
+   (CHARWD R 0.833336)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 20
+   (CHARWD R 0.277779)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER O 21
+   (CHARWD R 0.305557)
+   (CHARHT R 0.430555)
+   (CHARDP R 0.194445)
+   )
+(CHARACTER O 22
+   (CHARWD R 0.500002)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 23
+   (CHARWD R 0.500002)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 24
+   (CHARWD R 0.500002)
+   (CHARHT R 0.628473)
+   )
+(CHARACTER O 25
+   (CHARWD R 0.500002)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 26
+   (CHARWD R 0.500002)
+   (CHARHT R 0.567777)
+   )
+(CHARACTER O 27
+   (CHARWD R 0.750002)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 30
+   (CHARWD R 0.444446)
+   (CHARDP R 0.170138)
+   )
+(CHARACTER O 31
+   (CHARWD R 0.500003)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 32
+   (CHARWD R 0.722224)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER O 33
+   (CHARWD R 0.777781)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER O 34
+   (CHARWD R 0.500002)
+   (CHARHT R 0.527779)
+   (CHARDP R 0.097223)
+   )
+(CHARACTER O 35
+   (CHARWD R 0.902781)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 36
+   (CHARWD R 1.013891)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 37
+   (CHARWD R 0.777781)
+   (CHARHT R 0.731944)
+   (CHARDP R 0.048612)
+   )
+(CHARACTER O 40
+   (CHARWD R 0.277779)
+   (CHARHT R 0.430555)
+   (COMMENT
+      (KRN C l R -0.277779)
+      (KRN C L R -0.319446)
+      )
+   )
+(CHARACTER O 41
+   (CHARWD R 0.277779)
+   (CHARHT R 0.694445)
+   (COMMENT
+      (LIG O 140 O 74)
+      )
+   )
+(CHARACTER O 42
+   (CHARWD R 0.500002)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 43
+   (CHARWD R 0.833336)
+   (CHARHT R 0.694445)
+   (CHARDP R 0.194443)
+   )
+(CHARACTER O 44
+   (CHARWD R 0.500002)
+   (CHARHT R 0.75)
+   (CHARDP R 0.055555)
+   )
+(CHARACTER O 45
+   (CHARWD R 0.833336)
+   (CHARHT R 0.75)
+   (CHARDP R 0.055555)
+   )
+(CHARACTER O 46
+   (CHARWD R 0.777781)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 47
+   (CHARWD R 0.277779)
+   (CHARHT R 0.694445)
+   (COMMENT
+      (LIG O 47 O 42)
+      (KRN O 77 R 0.111112)
+      (KRN O 41 R 0.111112)
+      )
+   )
+(CHARACTER O 50
+   (CHARWD R 0.38889)
+   (CHARHT R 0.75)
+   (CHARDP R 0.25)
+   )
+(CHARACTER O 51
+   (CHARWD R 0.38889)
+   (CHARHT R 0.75)
+   (CHARDP R 0.25)
+   )
+(CHARACTER O 52
+   (CHARWD R 0.500002)
+   (CHARHT R 0.75)
+   )
+(CHARACTER O 53
+   (CHARWD R 0.777781)
+   (CHARHT R 0.583334)
+   (CHARDP R 0.083334)
+   )
+(CHARACTER O 54
+   (CHARWD R 0.277779)
+   (CHARHT R 0.105556)
+   (CHARDP R 0.194445)
+   )
+(CHARACTER O 55
+   (CHARWD R 0.333334)
+   (CHARHT R 0.430555)
+   (COMMENT
+      (LIG O 55 O 173)
+      )
+   )
+(CHARACTER O 56
+   (CHARWD R 0.277779)
+   (CHARHT R 0.105556)
+   )
+(CHARACTER O 57
+   (CHARWD R 0.500002)
+   (CHARHT R 0.75)
+   (CHARDP R 0.25)
+   )
+(CHARACTER C 0
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 1
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 2
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 3
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 4
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 5
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 6
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 7
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 8
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 9
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER O 72
+   (CHARWD R 0.277779)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER O 73
+   (CHARWD R 0.277779)
+   (CHARHT R 0.430555)
+   (CHARDP R 0.194445)
+   )
+(CHARACTER O 74
+   (CHARWD R 0.277779)
+   (CHARHT R 0.5)
+   (CHARDP R 0.194445)
+   )
+(CHARACTER O 75
+   (CHARWD R 0.777781)
+   (CHARHT R 0.366875)
+   (CHARDP R -0.133125)
+   )
+(CHARACTER O 76
+   (CHARWD R 0.472224)
+   (CHARHT R 0.5)
+   (CHARDP R 0.194445)
+   )
+(CHARACTER O 77
+   (CHARWD R 0.472224)
+   (CHARHT R 0.694445)
+   (COMMENT
+      (LIG O 140 O 76)
+      )
+   )
+(CHARACTER O 100
+   (CHARWD R 0.777781)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER C A
+   (CHARWD R 0.750002)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C t R -0.027779)
+      (KRN C C R -0.027779)
+      (KRN C O R -0.027779)
+      (KRN C G R -0.027779)
+      (KRN C U R -0.027779)
+      (KRN C Q R -0.027779)
+      (KRN C T R -0.083334)
+      (KRN C Y R -0.083334)
+      (KRN C V R -0.111112)
+      (KRN C W R -0.111112)
+      )
+   )
+(CHARACTER C B
+   (CHARWD R 0.708336)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C C
+   (CHARWD R 0.722224)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C D
+   (CHARWD R 0.763891)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C X R -0.027779)
+      (KRN C W R -0.027779)
+      (KRN C A R -0.027779)
+      (KRN C V R -0.027779)
+      (KRN C Y R -0.027779)
+      )
+   )
+(CHARACTER C E
+   (CHARWD R 0.680557)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C F
+   (CHARWD R 0.652781)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C o R -0.083334)
+      (KRN C e R -0.083334)
+      (KRN C u R -0.083334)
+      (KRN C r R -0.083334)
+      (KRN C a R -0.083334)
+      (KRN C A R -0.111112)
+      (KRN C O R -0.027779)
+      (KRN C C R -0.027779)
+      (KRN C G R -0.027779)
+      (KRN C Q R -0.027779)
+      )
+   )
+(CHARACTER C G
+   (CHARWD R 0.784724)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C H
+   (CHARWD R 0.750002)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C I
+   (CHARWD R 0.361112)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C I R 0.027779)
+      )
+   )
+(CHARACTER C J
+   (CHARWD R 0.51389)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C K
+   (CHARWD R 0.777781)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C O R -0.027779)
+      (KRN C C R -0.027779)
+      (KRN C G R -0.027779)
+      (KRN C Q R -0.027779)
+      )
+   )
+(CHARACTER C L
+   (CHARWD R 0.625002)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C T R -0.083334)
+      (KRN C Y R -0.083334)
+      (KRN C V R -0.111112)
+      (KRN C W R -0.111112)
+      )
+   )
+(CHARACTER C M
+   (CHARWD R 0.916669)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C N
+   (CHARWD R 0.750002)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C O
+   (CHARWD R 0.777781)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C X R -0.027779)
+      (KRN C W R -0.027779)
+      (KRN C A R -0.027779)
+      (KRN C V R -0.027779)
+      (KRN C Y R -0.027779)
+      )
+   )
+(CHARACTER C P
+   (CHARWD R 0.680557)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C A R -0.083334)
+      (KRN C o R -0.027779)
+      (KRN C e R -0.027779)
+      (KRN C a R -0.027779)
+      (KRN O 56 R -0.083334)
+      (KRN O 54 R -0.083334)
+      )
+   )
+(CHARACTER C Q
+   (CHARWD R 0.777781)
+   (CHARHT R 0.683332)
+   (CHARDP R 0.194445)
+   )
+(CHARACTER C R
+   (CHARWD R 0.736113)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C t R -0.027779)
+      (KRN C C R -0.027779)
+      (KRN C O R -0.027779)
+      (KRN C G R -0.027779)
+      (KRN C U R -0.027779)
+      (KRN C Q R -0.027779)
+      (KRN C T R -0.083334)
+      (KRN C Y R -0.083334)
+      (KRN C V R -0.111112)
+      (KRN C W R -0.111112)
+      )
+   )
+(CHARACTER C S
+   (CHARWD R 0.555557)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C T
+   (CHARWD R 0.722224)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C y R -0.027779)
+      (KRN C e R -0.083334)
+      (KRN C o R -0.083334)
+      (KRN C r R -0.083334)
+      (KRN C a R -0.083334)
+      (KRN C A R -0.083334)
+      (KRN C u R -0.083334)
+      )
+   )
+(CHARACTER C U
+   (CHARWD R 0.750002)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C V
+   (CHARWD R 0.750002)
+   (CHARHT R 0.683332)
+   (CHARIC R 0.013888)
+   (COMMENT
+      (KRN C o R -0.083334)
+      (KRN C e R -0.083334)
+      (KRN C u R -0.083334)
+      (KRN C r R -0.083334)
+      (KRN C a R -0.083334)
+      (KRN C A R -0.111112)
+      (KRN C O R -0.027779)
+      (KRN C C R -0.027779)
+      (KRN C G R -0.027779)
+      (KRN C Q R -0.027779)
+      )
+   )
+(CHARACTER C W
+   (CHARWD R 1.027781)
+   (CHARHT R 0.683332)
+   (CHARIC R 0.013888)
+   (COMMENT
+      (KRN C o R -0.083334)
+      (KRN C e R -0.083334)
+      (KRN C u R -0.083334)
+      (KRN C r R -0.083334)
+      (KRN C a R -0.083334)
+      (KRN C A R -0.111112)
+      (KRN C O R -0.027779)
+      (KRN C C R -0.027779)
+      (KRN C G R -0.027779)
+      (KRN C Q R -0.027779)
+      )
+   )
+(CHARACTER C X
+   (CHARWD R 0.750002)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C O R -0.027779)
+      (KRN C C R -0.027779)
+      (KRN C G R -0.027779)
+      (KRN C Q R -0.027779)
+      )
+   )
+(CHARACTER C Y
+   (CHARWD R 0.750002)
+   (CHARHT R 0.683332)
+   (CHARIC R 0.025)
+   (COMMENT
+      (KRN C e R -0.083334)
+      (KRN C o R -0.083334)
+      (KRN C r R -0.083334)
+      (KRN C a R -0.083334)
+      (KRN C A R -0.083334)
+      (KRN C u R -0.083334)
+      )
+   )
+(CHARACTER C Z
+   (CHARWD R 0.611113)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 133
+   (CHARWD R 0.277779)
+   (CHARHT R 0.75)
+   (CHARDP R 0.25)
+   )
+(CHARACTER O 134
+   (CHARWD R 0.500002)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 135
+   (CHARWD R 0.277779)
+   (CHARHT R 0.75)
+   (CHARDP R 0.25)
+   )
+(CHARACTER O 136
+   (CHARWD R 0.500002)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 137
+   (CHARWD R 0.277779)
+   (CHARHT R 0.667859)
+   )
+(CHARACTER O 140
+   (CHARWD R 0.277779)
+   (CHARHT R 0.694445)
+   (COMMENT
+      (LIG O 140 O 134)
+      )
+   )
+(CHARACTER C a
+   (CHARWD R 0.500002)
+   (CHARHT R 0.430555)
+   (COMMENT
+      (KRN C v R -0.027779)
+      (KRN C j R 0.055555)
+      (KRN C y R -0.027779)
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C b
+   (CHARWD R 0.555557)
+   (CHARHT R 0.694445)
+   (COMMENT
+      (KRN C e R 0.027779)
+      (KRN C o R 0.027779)
+      (KRN C x R -0.027779)
+      (KRN C d R 0.027779)
+      (KRN C c R 0.027779)
+      (KRN C q R 0.027779)
+      (KRN C v R -0.027779)
+      (KRN C j R 0.055555)
+      (KRN C y R -0.027779)
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C c
+   (CHARWD R 0.444446)
+   (CHARHT R 0.430555)
+   (COMMENT
+      (KRN C h R -0.027779)
+      (KRN C k R -0.027779)
+      )
+   )
+(CHARACTER C d
+   (CHARWD R 0.555557)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER C e
+   (CHARWD R 0.444446)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER C f
+   (CHARWD R 0.305557)
+   (CHARHT R 0.694445)
+   (CHARIC R 0.077779)
+   (COMMENT
+      (LIG C i O 14)
+      (LIG C f O 13)
+      (LIG C l O 15)
+      (KRN O 47 R 0.077779)
+      (KRN O 77 R 0.077779)
+      (KRN O 41 R 0.077779)
+      (KRN O 51 R 0.077779)
+      (KRN O 135 R 0.077779)
+      )
+   )
+(CHARACTER C g
+   (CHARWD R 0.500002)
+   (CHARHT R 0.430555)
+   (CHARDP R 0.194445)
+   (CHARIC R 0.013888)
+   (COMMENT
+      (KRN C j R 0.027779)
+      )
+   )
+(CHARACTER C h
+   (CHARWD R 0.555557)
+   (CHARHT R 0.694445)
+   (COMMENT
+      (KRN C t R -0.027779)
+      (KRN C u R -0.027779)
+      (KRN C b R -0.027779)
+      (KRN C y R -0.027779)
+      (KRN C v R -0.027779)
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C i
+   (CHARWD R 0.277779)
+   (CHARHT R 0.667859)
+   )
+(CHARACTER C j
+   (CHARWD R 0.305557)
+   (CHARHT R 0.667859)
+   (CHARDP R 0.194445)
+   )
+(CHARACTER C k
+   (CHARWD R 0.527781)
+   (CHARHT R 0.694445)
+   (COMMENT
+      (KRN C a R -0.055555)
+      (KRN C e R -0.027779)
+      (KRN C a R -0.027779)
+      (KRN C o R -0.027779)
+      (KRN C c R -0.027779)
+      )
+   )
+(CHARACTER C l
+   (CHARWD R 0.277779)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER C m
+   (CHARWD R 0.833336)
+   (CHARHT R 0.430555)
+   (COMMENT
+      (KRN C t R -0.027779)
+      (KRN C u R -0.027779)
+      (KRN C b R -0.027779)
+      (KRN C y R -0.027779)
+      (KRN C v R -0.027779)
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C n
+   (CHARWD R 0.555557)
+   (CHARHT R 0.430555)
+   (COMMENT
+      (KRN C t R -0.027779)
+      (KRN C u R -0.027779)
+      (KRN C b R -0.027779)
+      (KRN C y R -0.027779)
+      (KRN C v R -0.027779)
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C o
+   (CHARWD R 0.500002)
+   (CHARHT R 0.430555)
+   (COMMENT
+      (KRN C e R 0.027779)
+      (KRN C o R 0.027779)
+      (KRN C x R -0.027779)
+      (KRN C d R 0.027779)
+      (KRN C c R 0.027779)
+      (KRN C q R 0.027779)
+      (KRN C v R -0.027779)
+      (KRN C j R 0.055555)
+      (KRN C y R -0.027779)
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C p
+   (CHARWD R 0.555557)
+   (CHARHT R 0.430555)
+   (CHARDP R 0.194445)
+   (COMMENT
+      (KRN C e R 0.027779)
+      (KRN C o R 0.027779)
+      (KRN C x R -0.027779)
+      (KRN C d R 0.027779)
+      (KRN C c R 0.027779)
+      (KRN C q R 0.027779)
+      (KRN C v R -0.027779)
+      (KRN C j R 0.055555)
+      (KRN C y R -0.027779)
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C q
+   (CHARWD R 0.527779)
+   (CHARHT R 0.430555)
+   (CHARDP R 0.194445)
+   )
+(CHARACTER C r
+   (CHARWD R 0.391668)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER C s
+   (CHARWD R 0.394445)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER C t
+   (CHARWD R 0.38889)
+   (CHARHT R 0.61508)
+   (COMMENT
+      (KRN C y R -0.027779)
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C u
+   (CHARWD R 0.555557)
+   (CHARHT R 0.430555)
+   (COMMENT
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C v
+   (CHARWD R 0.527781)
+   (CHARHT R 0.430555)
+   (CHARIC R 0.013888)
+   (COMMENT
+      (KRN C a R -0.055555)
+      (KRN C e R -0.027779)
+      (KRN C a R -0.027779)
+      (KRN C o R -0.027779)
+      (KRN C c R -0.027779)
+      )
+   )
+(CHARACTER C w
+   (CHARWD R 0.722224)
+   (CHARHT R 0.430555)
+   (CHARIC R 0.013888)
+   (COMMENT
+      (KRN C e R -0.027779)
+      (KRN C a R -0.027779)
+      (KRN C o R -0.027779)
+      (KRN C c R -0.027779)
+      )
+   )
+(CHARACTER C x
+   (CHARWD R 0.527781)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER C y
+   (CHARWD R 0.527781)
+   (CHARHT R 0.430555)
+   (CHARDP R 0.194445)
+   (CHARIC R 0.013888)
+   (COMMENT
+      (KRN C o R -0.027779)
+      (KRN C e R -0.027779)
+      (KRN C a R -0.027779)
+      (KRN O 56 R -0.083334)
+      (KRN O 54 R -0.083334)
+      )
+   )
+(CHARACTER C z
+   (CHARWD R 0.444446)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER O 173
+   (CHARWD R 0.500002)
+   (CHARHT R 0.430555)
+   (CHARIC R 0.027779)
+   (COMMENT
+      (LIG O 55 O 174)
+      )
+   )
+(CHARACTER O 174
+   (CHARWD R 1.000003)
+   (CHARHT R 0.430555)
+   (CHARIC R 0.027779)
+   )
+(CHARACTER O 175
+   (CHARWD R 0.500002)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 176
+   (CHARWD R 0.500002)
+   (CHARHT R 0.667859)
+   )
+(CHARACTER O 177
+   (CHARWD R 0.500002)
+   (CHARHT R 0.667859)
+   )


Property changes on: branches/stable/source/src/texk/web2c/tests/fonttoobig-ds1024.pl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/stable/source/src/texk/web2c/tests/fonttoobig-ds1024.tfm
===================================================================
(Binary files differ)

Index: branches/stable/source/src/texk/web2c/tests/fonttoobig-ds1024.tfm
===================================================================
--- branches/stable/source/src/texk/web2c/tests/fonttoobig-ds1024.tfm	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/tests/fonttoobig-ds1024.tfm	2025-02-15 16:07:47 UTC (rev 951)

Property changes on: branches/stable/source/src/texk/web2c/tests/fonttoobig-ds1024.tfm
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-tex-tfm
\ No newline at end of property
Added: branches/stable/source/src/texk/web2c/tests/fonttoobig-ds256.pl
===================================================================
--- branches/stable/source/src/texk/web2c/tests/fonttoobig-ds256.pl	                        (rev 0)
+++ branches/stable/source/src/texk/web2c/tests/fonttoobig-ds256.pl	2025-02-15 16:07:47 UTC (rev 951)
@@ -0,0 +1,981 @@
+(FAMILY CMR)
+(FACE O 352)
+(CODINGSCHEME TEX TEXT)
+(DESIGNSIZE R 256.0)
+(COMMENT DESIGNSIZE IS IN POINTS)
+(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+(comment This is cmr10 with designsize changed to 256, for fonttoobig.tex.)
+(SEVENBITSAFEFLAG TRUE)
+(FONTDIMEN
+   (SLANT R 0.0)
+   (SPACE R 0.333334)
+   (STRETCH R 0.166667)
+   (SHRINK R 0.111112)
+   (XHEIGHT R 0.430555)
+   (QUAD R 1.000003)
+   (EXTRASPACE R 0.111112)
+   )
+(LIGTABLE
+   (LABEL O 40)
+   (KRN C l R -0.277779)
+   (KRN C L R -0.319446)
+   (STOP)
+   (LABEL C f)
+   (LIG C i O 14)
+   (LIG C f O 13)
+   (LIG C l O 15)
+   (KRN O 47 R 0.077779)
+   (KRN O 77 R 0.077779)
+   (KRN O 41 R 0.077779)
+   (KRN O 51 R 0.077779)
+   (KRN O 135 R 0.077779)
+   (STOP)
+   (LABEL O 13)
+   (LIG C i O 16)
+   (LIG C l O 17)
+   (KRN O 47 R 0.077779)
+   (KRN O 77 R 0.077779)
+   (KRN O 41 R 0.077779)
+   (KRN O 51 R 0.077779)
+   (KRN O 135 R 0.077779)
+   (STOP)
+   (LABEL O 140)
+   (LIG O 140 O 134)
+   (STOP)
+   (LABEL O 47)
+   (LIG O 47 O 42)
+   (KRN O 77 R 0.111112)
+   (KRN O 41 R 0.111112)
+   (STOP)
+   (LABEL O 55)
+   (LIG O 55 O 173)
+   (STOP)
+   (LABEL O 173)
+   (LIG O 55 O 174)
+   (STOP)
+   (LABEL O 41)
+   (LIG O 140 O 74)
+   (STOP)
+   (LABEL O 77)
+   (LIG O 140 O 76)
+   (STOP)
+   (LABEL C k)
+   (LABEL C v)
+   (KRN C a R -0.055555)
+   (LABEL C w)
+   (KRN C e R -0.027779)
+   (KRN C a R -0.027779)
+   (KRN C o R -0.027779)
+   (KRN C c R -0.027779)
+   (STOP)
+   (LABEL C P)
+   (KRN C A R -0.083334)
+   (LABEL C y)
+   (KRN C o R -0.027779)
+   (KRN C e R -0.027779)
+   (KRN C a R -0.027779)
+   (KRN O 56 R -0.083334)
+   (KRN O 54 R -0.083334)
+   (STOP)
+   (LABEL C F)
+   (LABEL C V)
+   (LABEL C W)
+   (KRN C o R -0.083334)
+   (KRN C e R -0.083334)
+   (KRN C u R -0.083334)
+   (KRN C r R -0.083334)
+   (KRN C a R -0.083334)
+   (KRN C A R -0.111112)
+   (LABEL C K)
+   (LABEL C X)
+   (KRN C O R -0.027779)
+   (KRN C C R -0.027779)
+   (KRN C G R -0.027779)
+   (KRN C Q R -0.027779)
+   (STOP)
+   (LABEL C T)
+   (KRN C y R -0.027779)
+   (LABEL C Y)
+   (KRN C e R -0.083334)
+   (KRN C o R -0.083334)
+   (KRN C r R -0.083334)
+   (KRN C a R -0.083334)
+   (KRN C A R -0.083334)
+   (KRN C u R -0.083334)
+   (STOP)
+   (LABEL C D)
+   (LABEL C O)
+   (KRN C X R -0.027779)
+   (KRN C W R -0.027779)
+   (KRN C A R -0.027779)
+   (KRN C V R -0.027779)
+   (KRN C Y R -0.027779)
+   (STOP)
+   (LABEL C h)
+   (LABEL C m)
+   (LABEL C n)
+   (KRN C t R -0.027779)
+   (KRN C u R -0.027779)
+   (KRN C b R -0.027779)
+   (KRN C y R -0.027779)
+   (KRN C v R -0.027779)
+   (KRN C w R -0.027779)
+   (STOP)
+   (LABEL C c)
+   (KRN C h R -0.027779)
+   (KRN C k R -0.027779)
+   (STOP)
+   (LABEL C b)
+   (LABEL C o)
+   (LABEL C p)
+   (KRN C e R 0.027779)
+   (KRN C o R 0.027779)
+   (KRN C x R -0.027779)
+   (KRN C d R 0.027779)
+   (KRN C c R 0.027779)
+   (KRN C q R 0.027779)
+   (LABEL C a)
+   (KRN C v R -0.027779)
+   (KRN C j R 0.055555)
+   (LABEL C t)
+   (KRN C y R -0.027779)
+   (LABEL C u)
+   (KRN C w R -0.027779)
+   (STOP)
+   (LABEL C A)
+   (LABEL C R)
+   (KRN C t R -0.027779)
+   (KRN C C R -0.027779)
+   (KRN C O R -0.027779)
+   (KRN C G R -0.027779)
+   (KRN C U R -0.027779)
+   (KRN C Q R -0.027779)
+   (LABEL C L)
+   (KRN C T R -0.083334)
+   (KRN C Y R -0.083334)
+   (KRN C V R -0.111112)
+   (KRN C W R -0.111112)
+   (STOP)
+   (LABEL C g)
+   (KRN C j R 0.027779)
+   (STOP)
+   (LABEL C I)
+   (KRN C I R 0.027779)
+   (STOP)
+   )
+(CHARACTER O 0
+   (CHARWD R 0.625002)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 1
+   (CHARWD R 0.833336)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 2
+   (CHARWD R 0.777781)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 3
+   (CHARWD R 0.694446)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 4
+   (CHARWD R 0.666669)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 5
+   (CHARWD R 0.750002)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 6
+   (CHARWD R 0.722224)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 7
+   (CHARWD R 0.777781)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 10
+   (CHARWD R 0.722224)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 11
+   (CHARWD R 0.777781)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 12
+   (CHARWD R 0.722224)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 13
+   (CHARWD R 0.583336)
+   (CHARHT R 0.694445)
+   (CHARIC R 0.077779)
+   (COMMENT
+      (LIG C i O 16)
+      (LIG C l O 17)
+      (KRN O 47 R 0.077779)
+      (KRN O 77 R 0.077779)
+      (KRN O 41 R 0.077779)
+      (KRN O 51 R 0.077779)
+      (KRN O 135 R 0.077779)
+      )
+   )
+(CHARACTER O 14
+   (CHARWD R 0.555557)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 15
+   (CHARWD R 0.555557)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 16
+   (CHARWD R 0.833336)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 17
+   (CHARWD R 0.833336)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 20
+   (CHARWD R 0.277779)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER O 21
+   (CHARWD R 0.305557)
+   (CHARHT R 0.430555)
+   (CHARDP R 0.194445)
+   )
+(CHARACTER O 22
+   (CHARWD R 0.500002)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 23
+   (CHARWD R 0.500002)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 24
+   (CHARWD R 0.500002)
+   (CHARHT R 0.628473)
+   )
+(CHARACTER O 25
+   (CHARWD R 0.500002)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 26
+   (CHARWD R 0.500002)
+   (CHARHT R 0.567777)
+   )
+(CHARACTER O 27
+   (CHARWD R 0.750002)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 30
+   (CHARWD R 0.444446)
+   (CHARDP R 0.170138)
+   )
+(CHARACTER O 31
+   (CHARWD R 0.500003)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 32
+   (CHARWD R 0.722224)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER O 33
+   (CHARWD R 0.777781)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER O 34
+   (CHARWD R 0.500002)
+   (CHARHT R 0.527779)
+   (CHARDP R 0.097223)
+   )
+(CHARACTER O 35
+   (CHARWD R 0.902781)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 36
+   (CHARWD R 1.013891)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 37
+   (CHARWD R 0.777781)
+   (CHARHT R 0.731944)
+   (CHARDP R 0.048612)
+   )
+(CHARACTER O 40
+   (CHARWD R 0.277779)
+   (CHARHT R 0.430555)
+   (COMMENT
+      (KRN C l R -0.277779)
+      (KRN C L R -0.319446)
+      )
+   )
+(CHARACTER O 41
+   (CHARWD R 0.277779)
+   (CHARHT R 0.694445)
+   (COMMENT
+      (LIG O 140 O 74)
+      )
+   )
+(CHARACTER O 42
+   (CHARWD R 0.500002)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 43
+   (CHARWD R 0.833336)
+   (CHARHT R 0.694445)
+   (CHARDP R 0.194443)
+   )
+(CHARACTER O 44
+   (CHARWD R 0.500002)
+   (CHARHT R 0.75)
+   (CHARDP R 0.055555)
+   )
+(CHARACTER O 45
+   (CHARWD R 0.833336)
+   (CHARHT R 0.75)
+   (CHARDP R 0.055555)
+   )
+(CHARACTER O 46
+   (CHARWD R 0.777781)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 47
+   (CHARWD R 0.277779)
+   (CHARHT R 0.694445)
+   (COMMENT
+      (LIG O 47 O 42)
+      (KRN O 77 R 0.111112)
+      (KRN O 41 R 0.111112)
+      )
+   )
+(CHARACTER O 50
+   (CHARWD R 0.38889)
+   (CHARHT R 0.75)
+   (CHARDP R 0.25)
+   )
+(CHARACTER O 51
+   (CHARWD R 0.38889)
+   (CHARHT R 0.75)
+   (CHARDP R 0.25)
+   )
+(CHARACTER O 52
+   (CHARWD R 0.500002)
+   (CHARHT R 0.75)
+   )
+(CHARACTER O 53
+   (CHARWD R 0.777781)
+   (CHARHT R 0.583334)
+   (CHARDP R 0.083334)
+   )
+(CHARACTER O 54
+   (CHARWD R 0.277779)
+   (CHARHT R 0.105556)
+   (CHARDP R 0.194445)
+   )
+(CHARACTER O 55
+   (CHARWD R 0.333334)
+   (CHARHT R 0.430555)
+   (COMMENT
+      (LIG O 55 O 173)
+      )
+   )
+(CHARACTER O 56
+   (CHARWD R 0.277779)
+   (CHARHT R 0.105556)
+   )
+(CHARACTER O 57
+   (CHARWD R 0.500002)
+   (CHARHT R 0.75)
+   (CHARDP R 0.25)
+   )
+(CHARACTER C 0
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 1
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 2
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 3
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 4
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 5
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 6
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 7
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 8
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER C 9
+   (CHARWD R 0.500002)
+   (CHARHT R 0.644444)
+   )
+(CHARACTER O 72
+   (CHARWD R 0.277779)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER O 73
+   (CHARWD R 0.277779)
+   (CHARHT R 0.430555)
+   (CHARDP R 0.194445)
+   )
+(CHARACTER O 74
+   (CHARWD R 0.277779)
+   (CHARHT R 0.5)
+   (CHARDP R 0.194445)
+   )
+(CHARACTER O 75
+   (CHARWD R 0.777781)
+   (CHARHT R 0.366875)
+   (CHARDP R -0.133125)
+   )
+(CHARACTER O 76
+   (CHARWD R 0.472224)
+   (CHARHT R 0.5)
+   (CHARDP R 0.194445)
+   )
+(CHARACTER O 77
+   (CHARWD R 0.472224)
+   (CHARHT R 0.694445)
+   (COMMENT
+      (LIG O 140 O 76)
+      )
+   )
+(CHARACTER O 100
+   (CHARWD R 0.777781)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER C A
+   (CHARWD R 0.750002)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C t R -0.027779)
+      (KRN C C R -0.027779)
+      (KRN C O R -0.027779)
+      (KRN C G R -0.027779)
+      (KRN C U R -0.027779)
+      (KRN C Q R -0.027779)
+      (KRN C T R -0.083334)
+      (KRN C Y R -0.083334)
+      (KRN C V R -0.111112)
+      (KRN C W R -0.111112)
+      )
+   )
+(CHARACTER C B
+   (CHARWD R 0.708336)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C C
+   (CHARWD R 0.722224)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C D
+   (CHARWD R 0.763891)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C X R -0.027779)
+      (KRN C W R -0.027779)
+      (KRN C A R -0.027779)
+      (KRN C V R -0.027779)
+      (KRN C Y R -0.027779)
+      )
+   )
+(CHARACTER C E
+   (CHARWD R 0.680557)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C F
+   (CHARWD R 0.652781)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C o R -0.083334)
+      (KRN C e R -0.083334)
+      (KRN C u R -0.083334)
+      (KRN C r R -0.083334)
+      (KRN C a R -0.083334)
+      (KRN C A R -0.111112)
+      (KRN C O R -0.027779)
+      (KRN C C R -0.027779)
+      (KRN C G R -0.027779)
+      (KRN C Q R -0.027779)
+      )
+   )
+(CHARACTER C G
+   (CHARWD R 0.784724)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C H
+   (CHARWD R 0.750002)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C I
+   (CHARWD R 0.361112)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C I R 0.027779)
+      )
+   )
+(CHARACTER C J
+   (CHARWD R 0.51389)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C K
+   (CHARWD R 0.777781)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C O R -0.027779)
+      (KRN C C R -0.027779)
+      (KRN C G R -0.027779)
+      (KRN C Q R -0.027779)
+      )
+   )
+(CHARACTER C L
+   (CHARWD R 0.625002)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C T R -0.083334)
+      (KRN C Y R -0.083334)
+      (KRN C V R -0.111112)
+      (KRN C W R -0.111112)
+      )
+   )
+(CHARACTER C M
+   (CHARWD R 0.916669)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C N
+   (CHARWD R 0.750002)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C O
+   (CHARWD R 0.777781)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C X R -0.027779)
+      (KRN C W R -0.027779)
+      (KRN C A R -0.027779)
+      (KRN C V R -0.027779)
+      (KRN C Y R -0.027779)
+      )
+   )
+(CHARACTER C P
+   (CHARWD R 0.680557)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C A R -0.083334)
+      (KRN C o R -0.027779)
+      (KRN C e R -0.027779)
+      (KRN C a R -0.027779)
+      (KRN O 56 R -0.083334)
+      (KRN O 54 R -0.083334)
+      )
+   )
+(CHARACTER C Q
+   (CHARWD R 0.777781)
+   (CHARHT R 0.683332)
+   (CHARDP R 0.194445)
+   )
+(CHARACTER C R
+   (CHARWD R 0.736113)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C t R -0.027779)
+      (KRN C C R -0.027779)
+      (KRN C O R -0.027779)
+      (KRN C G R -0.027779)
+      (KRN C U R -0.027779)
+      (KRN C Q R -0.027779)
+      (KRN C T R -0.083334)
+      (KRN C Y R -0.083334)
+      (KRN C V R -0.111112)
+      (KRN C W R -0.111112)
+      )
+   )
+(CHARACTER C S
+   (CHARWD R 0.555557)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C T
+   (CHARWD R 0.722224)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C y R -0.027779)
+      (KRN C e R -0.083334)
+      (KRN C o R -0.083334)
+      (KRN C r R -0.083334)
+      (KRN C a R -0.083334)
+      (KRN C A R -0.083334)
+      (KRN C u R -0.083334)
+      )
+   )
+(CHARACTER C U
+   (CHARWD R 0.750002)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER C V
+   (CHARWD R 0.750002)
+   (CHARHT R 0.683332)
+   (CHARIC R 0.013888)
+   (COMMENT
+      (KRN C o R -0.083334)
+      (KRN C e R -0.083334)
+      (KRN C u R -0.083334)
+      (KRN C r R -0.083334)
+      (KRN C a R -0.083334)
+      (KRN C A R -0.111112)
+      (KRN C O R -0.027779)
+      (KRN C C R -0.027779)
+      (KRN C G R -0.027779)
+      (KRN C Q R -0.027779)
+      )
+   )
+(CHARACTER C W
+   (CHARWD R 1.027781)
+   (CHARHT R 0.683332)
+   (CHARIC R 0.013888)
+   (COMMENT
+      (KRN C o R -0.083334)
+      (KRN C e R -0.083334)
+      (KRN C u R -0.083334)
+      (KRN C r R -0.083334)
+      (KRN C a R -0.083334)
+      (KRN C A R -0.111112)
+      (KRN C O R -0.027779)
+      (KRN C C R -0.027779)
+      (KRN C G R -0.027779)
+      (KRN C Q R -0.027779)
+      )
+   )
+(CHARACTER C X
+   (CHARWD R 0.750002)
+   (CHARHT R 0.683332)
+   (COMMENT
+      (KRN C O R -0.027779)
+      (KRN C C R -0.027779)
+      (KRN C G R -0.027779)
+      (KRN C Q R -0.027779)
+      )
+   )
+(CHARACTER C Y
+   (CHARWD R 0.750002)
+   (CHARHT R 0.683332)
+   (CHARIC R 0.025)
+   (COMMENT
+      (KRN C e R -0.083334)
+      (KRN C o R -0.083334)
+      (KRN C r R -0.083334)
+      (KRN C a R -0.083334)
+      (KRN C A R -0.083334)
+      (KRN C u R -0.083334)
+      )
+   )
+(CHARACTER C Z
+   (CHARWD R 0.611113)
+   (CHARHT R 0.683332)
+   )
+(CHARACTER O 133
+   (CHARWD R 0.277779)
+   (CHARHT R 0.75)
+   (CHARDP R 0.25)
+   )
+(CHARACTER O 134
+   (CHARWD R 0.500002)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 135
+   (CHARWD R 0.277779)
+   (CHARHT R 0.75)
+   (CHARDP R 0.25)
+   )
+(CHARACTER O 136
+   (CHARWD R 0.500002)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 137
+   (CHARWD R 0.277779)
+   (CHARHT R 0.667859)
+   )
+(CHARACTER O 140
+   (CHARWD R 0.277779)
+   (CHARHT R 0.694445)
+   (COMMENT
+      (LIG O 140 O 134)
+      )
+   )
+(CHARACTER C a
+   (CHARWD R 0.500002)
+   (CHARHT R 0.430555)
+   (COMMENT
+      (KRN C v R -0.027779)
+      (KRN C j R 0.055555)
+      (KRN C y R -0.027779)
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C b
+   (CHARWD R 0.555557)
+   (CHARHT R 0.694445)
+   (COMMENT
+      (KRN C e R 0.027779)
+      (KRN C o R 0.027779)
+      (KRN C x R -0.027779)
+      (KRN C d R 0.027779)
+      (KRN C c R 0.027779)
+      (KRN C q R 0.027779)
+      (KRN C v R -0.027779)
+      (KRN C j R 0.055555)
+      (KRN C y R -0.027779)
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C c
+   (CHARWD R 0.444446)
+   (CHARHT R 0.430555)
+   (COMMENT
+      (KRN C h R -0.027779)
+      (KRN C k R -0.027779)
+      )
+   )
+(CHARACTER C d
+   (CHARWD R 0.555557)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER C e
+   (CHARWD R 0.444446)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER C f
+   (CHARWD R 0.305557)
+   (CHARHT R 0.694445)
+   (CHARIC R 0.077779)
+   (COMMENT
+      (LIG C i O 14)
+      (LIG C f O 13)
+      (LIG C l O 15)
+      (KRN O 47 R 0.077779)
+      (KRN O 77 R 0.077779)
+      (KRN O 41 R 0.077779)
+      (KRN O 51 R 0.077779)
+      (KRN O 135 R 0.077779)
+      )
+   )
+(CHARACTER C g
+   (CHARWD R 0.500002)
+   (CHARHT R 0.430555)
+   (CHARDP R 0.194445)
+   (CHARIC R 0.013888)
+   (COMMENT
+      (KRN C j R 0.027779)
+      )
+   )
+(CHARACTER C h
+   (CHARWD R 0.555557)
+   (CHARHT R 0.694445)
+   (COMMENT
+      (KRN C t R -0.027779)
+      (KRN C u R -0.027779)
+      (KRN C b R -0.027779)
+      (KRN C y R -0.027779)
+      (KRN C v R -0.027779)
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C i
+   (CHARWD R 0.277779)
+   (CHARHT R 0.667859)
+   )
+(CHARACTER C j
+   (CHARWD R 0.305557)
+   (CHARHT R 0.667859)
+   (CHARDP R 0.194445)
+   )
+(CHARACTER C k
+   (CHARWD R 0.527781)
+   (CHARHT R 0.694445)
+   (COMMENT
+      (KRN C a R -0.055555)
+      (KRN C e R -0.027779)
+      (KRN C a R -0.027779)
+      (KRN C o R -0.027779)
+      (KRN C c R -0.027779)
+      )
+   )
+(CHARACTER C l
+   (CHARWD R 0.277779)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER C m
+   (CHARWD R 0.833336)
+   (CHARHT R 0.430555)
+   (COMMENT
+      (KRN C t R -0.027779)
+      (KRN C u R -0.027779)
+      (KRN C b R -0.027779)
+      (KRN C y R -0.027779)
+      (KRN C v R -0.027779)
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C n
+   (CHARWD R 0.555557)
+   (CHARHT R 0.430555)
+   (COMMENT
+      (KRN C t R -0.027779)
+      (KRN C u R -0.027779)
+      (KRN C b R -0.027779)
+      (KRN C y R -0.027779)
+      (KRN C v R -0.027779)
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C o
+   (CHARWD R 0.500002)
+   (CHARHT R 0.430555)
+   (COMMENT
+      (KRN C e R 0.027779)
+      (KRN C o R 0.027779)
+      (KRN C x R -0.027779)
+      (KRN C d R 0.027779)
+      (KRN C c R 0.027779)
+      (KRN C q R 0.027779)
+      (KRN C v R -0.027779)
+      (KRN C j R 0.055555)
+      (KRN C y R -0.027779)
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C p
+   (CHARWD R 0.555557)
+   (CHARHT R 0.430555)
+   (CHARDP R 0.194445)
+   (COMMENT
+      (KRN C e R 0.027779)
+      (KRN C o R 0.027779)
+      (KRN C x R -0.027779)
+      (KRN C d R 0.027779)
+      (KRN C c R 0.027779)
+      (KRN C q R 0.027779)
+      (KRN C v R -0.027779)
+      (KRN C j R 0.055555)
+      (KRN C y R -0.027779)
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C q
+   (CHARWD R 0.527779)
+   (CHARHT R 0.430555)
+   (CHARDP R 0.194445)
+   )
+(CHARACTER C r
+   (CHARWD R 0.391668)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER C s
+   (CHARWD R 0.394445)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER C t
+   (CHARWD R 0.38889)
+   (CHARHT R 0.61508)
+   (COMMENT
+      (KRN C y R -0.027779)
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C u
+   (CHARWD R 0.555557)
+   (CHARHT R 0.430555)
+   (COMMENT
+      (KRN C w R -0.027779)
+      )
+   )
+(CHARACTER C v
+   (CHARWD R 0.527781)
+   (CHARHT R 0.430555)
+   (CHARIC R 0.013888)
+   (COMMENT
+      (KRN C a R -0.055555)
+      (KRN C e R -0.027779)
+      (KRN C a R -0.027779)
+      (KRN C o R -0.027779)
+      (KRN C c R -0.027779)
+      )
+   )
+(CHARACTER C w
+   (CHARWD R 0.722224)
+   (CHARHT R 0.430555)
+   (CHARIC R 0.013888)
+   (COMMENT
+      (KRN C e R -0.027779)
+      (KRN C a R -0.027779)
+      (KRN C o R -0.027779)
+      (KRN C c R -0.027779)
+      )
+   )
+(CHARACTER C x
+   (CHARWD R 0.527781)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER C y
+   (CHARWD R 0.527781)
+   (CHARHT R 0.430555)
+   (CHARDP R 0.194445)
+   (CHARIC R 0.013888)
+   (COMMENT
+      (KRN C o R -0.027779)
+      (KRN C e R -0.027779)
+      (KRN C a R -0.027779)
+      (KRN O 56 R -0.083334)
+      (KRN O 54 R -0.083334)
+      )
+   )
+(CHARACTER C z
+   (CHARWD R 0.444446)
+   (CHARHT R 0.430555)
+   )
+(CHARACTER O 173
+   (CHARWD R 0.500002)
+   (CHARHT R 0.430555)
+   (CHARIC R 0.027779)
+   (COMMENT
+      (LIG O 55 O 174)
+      )
+   )
+(CHARACTER O 174
+   (CHARWD R 1.000003)
+   (CHARHT R 0.430555)
+   (CHARIC R 0.027779)
+   )
+(CHARACTER O 175
+   (CHARWD R 0.500002)
+   (CHARHT R 0.694445)
+   )
+(CHARACTER O 176
+   (CHARWD R 0.500002)
+   (CHARHT R 0.667859)
+   )
+(CHARACTER O 177
+   (CHARWD R 0.500002)
+   (CHARHT R 0.667859)
+   )


Property changes on: branches/stable/source/src/texk/web2c/tests/fonttoobig-ds256.pl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/stable/source/src/texk/web2c/tests/fonttoobig-ds256.tfm
===================================================================
(Binary files differ)

Index: branches/stable/source/src/texk/web2c/tests/fonttoobig-ds256.tfm
===================================================================
--- branches/stable/source/src/texk/web2c/tests/fonttoobig-ds256.tfm	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/tests/fonttoobig-ds256.tfm	2025-02-15 16:07:47 UTC (rev 951)

Property changes on: branches/stable/source/src/texk/web2c/tests/fonttoobig-ds256.tfm
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-tex-tfm
\ No newline at end of property
Added: branches/stable/source/src/texk/web2c/tests/fonttoobig.tex
===================================================================
--- branches/stable/source/src/texk/web2c/tests/fonttoobig.tex	                        (rev 0)
+++ branches/stable/source/src/texk/web2c/tests/fonttoobig.tex	2025-02-15 16:07:47 UTC (rev 951)
@@ -0,0 +1,16 @@
+% $Id: fonttoobig.tex 73614 2025-01-27 22:21:07Z karl $
+% Test file (runs with initex) for scaling fonts so much that overflow
+% or silent transformation of user's value occurs. Public domain.
+% See "scaling fonts to 2048pt" in tex.ch.
+%
+% These fonts are also in the web2c/tests directory, siblings to this file.
+
+\font\x=./fonttoobig-ds1024 scaled 32000
+\show\x % without fix, get \x=select font bug at 1000.0pt.
+
+\font\x=./fonttoobig-ds256 scaled 8000 % fpe
+
+\font\x=./io scaled 16000 \x 0 % fpe per igor tex-k  25 Jun 2021 10:27:28
+\font\x=./io scaled 15999 \x 0 % ok
+\end
+


Property changes on: branches/stable/source/src/texk/web2c/tests/fonttoobig.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/stable/source/src/texk/web2c/tests/io.tfm
===================================================================
(Binary files differ)

Index: branches/stable/source/src/texk/web2c/tests/io.tfm
===================================================================
--- branches/stable/source/src/texk/web2c/tests/io.tfm	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/tests/io.tfm	2025-02-15 16:07:47 UTC (rev 951)

Property changes on: branches/stable/source/src/texk/web2c/tests/io.tfm
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: branches/stable/source/src/texk/web2c/tests/outerdel.tex
===================================================================
--- branches/stable/source/src/texk/web2c/tests/outerdel.tex	                        (rev 0)
+++ branches/stable/source/src/texk/web2c/tests/outerdel.tex	2025-02-15 16:07:47 UTC (rev 951)
@@ -0,0 +1,112 @@
+% $Id: outerdel.tex 73679 2025-02-01 22:56:43Z karl $
+% Public domain, from Udo Wermuth.
+% 
+% Running TeX on this will provoke an error.
+% Deleting 3 tokens at the interactive prompt should result in
+%   ! File ended while scanning definition of \one.
+% and not delete tokens through eof.
+% Full message from Udo below (files are renamed for inclusion web2c).
+% 
+% BTW, there are no \outer tokens involved in this test, but the original
+% change involved deleting \outer tokens.
+% https://tug.org/pipermail/tex-k/2024-March/004021.html
+
+\catcode`\{=1 \catcode`\}=2 \let\ea=\expandafter
+\def\zero{z}
+\ea\edef\ea\one\ea{\input outerdelsub.tex\relax\zero}
+\show\one\end
+
+%Date: Fri, 7 Jun 2024 18:04:21 +0200
+%From: Udo Wermuth
+%To: Karl Berry <karl at freefriends.org>
+%Subject: Re: skipping tokens through the end of an input file
+%
+%I think now I know what you want me to do; I saw the error
+%report about \outer in an \edef on tex-k.
+%
+%Lets create two files:
+%1) sub.tex (1 line):
+%x\error y\noexpand
+%
+%2) main.tex (4 lines):
+%\let\ea=\expandafter
+%\def\zero{z}
+%\ea\edef\ea\one\ea{\input sub.tex\relax\zero}
+%\show\one\bye
+%
+%
+%tex sub gives an error
+%
+%! Undefined control sequence.
+%l.1 x\error
+%            y\noexpand
+%? 
+%
+%When you delete 1, 2, or 3 tokens at the ?-prompt it works as
+%expected. With 2 you get the *-prompt and you can say \bye.
+%With 3 you get the *-prompt too but now a \bye is deleted as
+%one delete operation is still waiting. At the next *-prompt
+%you can enter a valid \bye.
+%With 1 a \bye at the *-prompt is not expanded and thus doesn't
+%work. Again the next *-prompt accepts the \bye.
+%
+%
+%With tex main you get the error as above.
+%
+%With <return> or 1 the definition is finished as the outerness of the
+%eof is canceled by the \noexpand. With 2 the \noexpand is deleted too
+%and a <return> at the next ?-prompt gives a runaway error:
+%
+%Runaway definition?
+%->x
+%! File ended while scanning definition of \one.
+%<inserted text> 
+%                }
+%<to be read again> 
+%                   \relax 
+%l.4 \ea\edef\ea\one\ea{\input sub.tex\relax
+%                                           \zero}
+%? 
+%
+%Another <return> reports
+%
+%! Too many }'s.
+%l.4 \ea\edef\ea\one\ea{\input sub.tex\relax\zero}
+%                                                 
+%?
+%
+%before the run ends with another <return>. \one is what I expect and a
+%dvi is produced that shows `z' as expected.
+%
+%But with 2 and then a 1 (not a <return>) we get the runaway and with
+%a <return>
+%
+%<inserted text> }
+%                 
+%<to be read again> 
+%                   \relax 
+%l.4 \ea\edef\ea\one\ea{\input sub.tex\relax
+%                                           \zero}
+%?
+%
+%so that the definition can be finished. With 3 instead of 2 the same
+%happens.
+%
+%
+%
+%With the change that inserts OK_to_interrupt things change. When
+%you enter now 2 and 1 or directly 3 you get
+%
+%)
+%<recently read> \relax 
+%                       
+%l.4 \ea\edef\ea\one\ea{\input sub.tex\relax
+%                                           \zero}
+%? 
+%
+%That is y, \noexpand, and \relax are deleted. The outerness of the eof
+%doesn't count now and there is no inserted } anymore.
+%
+%I would consider this wrong. Somewhere the file ended and this end should
+%be treated as \outer. One could say in the last case the file ended with
+%the x.


Property changes on: branches/stable/source/src/texk/web2c/tests/outerdel.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/stable/source/src/texk/web2c/tests/outerdelsub.tex
===================================================================
--- branches/stable/source/src/texk/web2c/tests/outerdelsub.tex	                        (rev 0)
+++ branches/stable/source/src/texk/web2c/tests/outerdelsub.tex	2025-02-15 16:07:47 UTC (rev 951)
@@ -0,0 +1,3 @@
+% $Id: outerdelsub.tex 73679 2025-02-01 22:56:43Z karl $
+% Public domain, from Udo Wermuth. See outerdel.tex
+x\error y\noexpand


Property changes on: branches/stable/source/src/texk/web2c/tests/outerdelsub.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/stable/source/src/texk/web2c/tex.ch
===================================================================
--- branches/stable/source/src/texk/web2c/tex.ch	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/texk/web2c/tex.ch	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,4 +1,4 @@
-% $Id: tex.ch 73009 2024-12-01 17:52:26Z karl $
+% $Id: tex.ch 73679 2025-02-01 22:56:43Z karl $
 % tex.ch for C compilation with web2c, derived from various other change files.
 % By Tim Morgan, UC Irvine ICS Department, and many others.
 %
@@ -956,16 +956,22 @@
 
 % [7.104] `remainder' is a library routine on some systems, so change
 % its name to avoid conflicts.
- at x [7.104] l.2248 - avoid name conflicts with lib routine remainder()
+ at x [7.104] l.2248 - avoid conflict with libc remainder(), save_arith_error
 |remainder|, holds the remainder after a division.
 
 @<Glob...@>=
 @y
-|remainder|, holds the remainder after a division.
+|remainder|, holds the remainder after a division. For Web2C, we rename
+it to |tex_remainder| to avoid conflicts with a system library routine
+named |remainder|.
 
+Also, we define a new variable |save_arith_error| for when we want to
+save and restore |arith_error|, down below.
+
 @d remainder==tex_remainder
 
 @<Glob...@>=
+@!save_arith_error:boolean;
 @z
 
 @x [7.109] l.2373 - Define glue_ratio in C.
@@ -1521,11 +1527,14 @@
 
 % Original report: https://tug.org/pipermail/tex-k/2024-March/004021.html
 % TeX bug entry:   https://tug.org/texmfbug/newbug.html#B142outer
- at x [24.336] l.7152 - allow interactive deletion of \outer token
-begin if scanner_status<>normal then
- at y
-begin if OK_to_interrupt and(scanner_status<>normal) then
- at z
+% -- but this has the problem that token deletion will now continue
+%    through an eof, which seems undesirable, and not a permissible
+%    change for "TeX". See tests/outerdel.tex.
+%@x [24.336] l.7152 - allow interactive deletion of \outer token
+%begin if scanner_status<>normal then
+%@y
+%begin if OK_to_interrupt and(scanner_status<>normal) then
+%@z
 
 @x [24.338] l.7191 - i18n fix
 print(" while scanning ");
@@ -2428,6 +2437,25 @@
 @d fbyte==tfm_temp
 @z
 
+% Too much font scaling can cause overflows and silently changing the
+% user's value. See tests/fonttoobig.tex for examples. Reports from
+% Igor Liferenko (https://tug.org/pipermail/tex-k/2021-June/003604.html)
+% and Tyge Tiessen (https://tug.org/pipermail/tex-k/2022-January/003752.html).
+% Original patch from Tyge.
+ at x [30.568] l.11072 - Avoid scaling fonts to 2048pt or more.
+  else z:=xn_over_d(z,-s,1000);
+ at y
+  else begin
+    save_arith_error:=arith_error;
+    sw:=z; z:=xn_over_d(z,-s,1000);
+    if arith_error or z>=@'1000000000 then begin
+       start_font_error_message; print(" scaled to 2048pt or higher");
+       help1("I will ignore the scaling factor."); error; z:=sw;
+       end;
+    arith_error:=save_arith_error;
+  end;
+ at z
+
 @x [30.570] l.11100 - MLTeX: fix for bug while loading font
   begin qw:=char_info(f)(d);
 @y
@@ -3419,6 +3447,17 @@
     begin if s>0 then
 @z
 
+ at x [49.1260] l.23418 - Avoid scaling fonts to 2048pt or more (see above).
+    else if font_size[f]=xn_over_d(font_dsize[f],-s,1000) then
+      goto common_ending;
+ at y
+    else begin arith_error:=false;
+      if font_size[f]=xn_over_d(font_dsize[f],-s,1000)
+      then if not arith_error
+        then goto common_ending;
+      end;
+ at z
+
 @x [49.1265] l.23454 - if batchmode, mktex... scripts should be silent.
 interaction:=cur_chr;
 @y

Modified: branches/stable/source/src/utils/README
===================================================================
--- branches/stable/source/src/utils/README	2025-02-12 15:47:12 UTC (rev 950)
+++ branches/stable/source/src/utils/README	2025-02-15 16:07:47 UTC (rev 951)
@@ -1,10 +1,10 @@
-$Id: README 70500 2024-03-08 16:00:52Z karl $
+$Id: README 73901 2025-02-11 21:53:03Z karl $
 Public domain.  Originally written 2005 by Karl Berry.
 
 Extra utilities we (optionally) compile for TeX Live.
 See comments in ../texk/README.
 
-asymptote 2.88 - checked 8mar24
+asymptote 2.99 - checked 11feb25
   update to TL from CTAN, to include prebuilt doc.
   see https://tug.org/texlive/build.html#asymptote
   and tlpkg/bin/tl-update-asy



More information about the pdftex-commits mailing list.