texlive[66896] Master/texmf-dist: l3 (19apr23)

commits+karl at tug.org commits+karl at tug.org
Wed Apr 19 22:13:27 CEST 2023


Revision: 66896
          http://tug.org/svn/texlive?view=revision&revision=66896
Author:   karl
Date:     2023-04-19 22:13:27 +0200 (Wed, 19 Apr 2023)
Log Message:
-----------
l3 (19apr23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3backend/README.md
    trunk/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3bitset/l3bitset.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3opacity/l3opacity.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
    trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty

Modified: trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md	2023-04-19 20:13:27 UTC (rev 66896)
@@ -6,11 +6,19 @@
 
 ## [Unreleased]
 
+## [2023-04-19]
+
+### Changed
+- Pass additional attributes when loading graphics in PDF mode
+
+### Fixed
+- Remove a stray `>` from graphics inclusion code for `dvipdfmx`
+
 ## [2023-03-30]
 
 ### Changed
-- Integrate l3color and l3opacity with luaotfload to ensure that
-  opacity specifications don't conflict.
+- Integrate `l3color` and `l3opacity` with `luaotfload` to ensure that
+  opacity specifications don't conflict
 
 ## [2023-01-16]
 
@@ -288,7 +296,8 @@
 - Include `l3backend` in file names
 - Moved backend code to internal for each 'parent' module
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-03-30...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-04-19...HEAD
+[2023-04-19]: https://github.com/latex3/latex3/compare/2023-03-30...2023-04-19
 [2023-03-30]: https://github.com/latex3/latex3/compare/2023-01-16...2023-03-30
 [2023-01-16]: https://github.com/latex3/latex3/compare/2022-10-26...2023-01-16
 [2022-10-26]: https://github.com/latex3/latex3/compare/2022-09-28...2022-10-26

Modified: trunk/Master/texmf-dist/doc/latex/l3backend/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3backend/README.md	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/doc/latex/l3backend/README.md	2023-04-19 20:13:27 UTC (rev 66896)
@@ -1,7 +1,7 @@
 LaTeX3 Backend Drivers
 ======================
 
-Release 2023-03-30
+Release 2023-04-19
 
 This package forms parts of `expl3`, and contains the code used to interface
 with backends (drivers) across the `expl3` codebase. The functions here are

Modified: trunk/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2023-04-19 20:13:27 UTC (rev 66896)
@@ -7,6 +7,14 @@
 
 ## [Unreleased]
 
+## [2023-04-19]
+
+### Added
+- Key `pdf-attr` to `l3graphics` for additional attribute setting
+
+### Fixed
+- Grouping in `\draw_path_arc_axes:nnnn` (see \#1195)
+
 ## [2023-03-30]
 
 ### Fixed
@@ -262,7 +270,8 @@
 - New `l3color` module using `xcolor`-like expression syntax
 - New `l3draw` module, based on `pgf` layer of the TikZ system
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-03-30...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-04-19...HEAD
+[2023-04-19]: https://github.com/latex3/latex3/compare/2023-03-30...2023-04-19
 [2023-03-30]: https://github.com/latex3/latex3/compare/2023-01-24...2023-03-30
 [2023-01-24]: https://github.com/latex3/latex3/compare/2022-04-20...2023-01-24
 [2022-04-20]: https://github.com/latex3/latex3/compare/2022-04-10...2022-04-20

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2023-04-19 20:13:27 UTC (rev 66896)
@@ -1,7 +1,7 @@
 Experimental LaTeX3 Concepts
 ============================
 
-Release 2023-03-30
+Release 2023-04-19
 
 Overview
 --------

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3bitset/l3bitset.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3opacity/l3opacity.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2023-04-19 20:13:27 UTC (rev 66896)
@@ -7,9 +7,28 @@
 
 ## [Unreleased]
 
+## [2023-04-19]
+
+### Added
+- `\box_set_clipped:N` and variants (renamed from `\box_clip:N`)
+- `\text_declare_lowercase_mapping:nn(n)`,
+   `\text_declare_titlecase_mapping:nn(n)`
+   and `\text_declare_uppercase_mapping:nn(n)` to allow customization of
+   case changing outcomes
+
+### Changed
+- `\box_set_trim:Nnnnn` and `\box_set_viewport:Nnnnn` moved to
+  stable kernel
+
+### Fixed
+- Incorrect internal name in `\pdf_pagesize_gset:nn`
+
+### Removed
+- Experimental `\box_clip:N` and variants (renamed to 
+  `\box_set_clipped:N`)
+
 ## [2023-03-30]
 
-
 ### Added
 - `\tex_endlocalcontrol:D` as expl3 name for the LuaTeX primitive
 
@@ -1319,7 +1338,8 @@
 - Step functions have been added for dim variables,
   e.g. `\dim_step_inline:nnnn`
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-03-30...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-04-19...HEAD
+[2023-04-19]: https://github.com/latex3/latex3/compare/2023-03-30...2023-04-19
 [2023-03-30]: https://github.com/latex3/latex3/compare/2023-02-22...2023-03-30
 [2023-02-22]: https://github.com/latex3/latex3/compare/2023-02-07...2023-02-22
 [2023-02-07]: https://github.com/latex3/latex3/compare/2023-02-02...2023-02-07

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2023-04-19 20:13:27 UTC (rev 66896)
@@ -1,7 +1,7 @@
 LaTeX3 Programming Conventions
 ==============================
 
-Release 2023-03-30
+Release 2023-04-19
 
 Overview
 --------

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2023-04-19 20:13:27 UTC (rev 66896)
@@ -62,7 +62,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2023-03-30}
+\date{Released 2023-04-19}
 
 \pagenumbering{roman}
 \maketitle

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2023-04-19 20:13:27 UTC (rev 66896)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-03-30}
+\date{Released 2023-04-19}
 
 \begin{document}
 

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2023-04-19 20:13:27 UTC (rev 66896)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-03-30}
+\date{Released 2023-04-19}
 
 \newcommand{\TF}{\textit{(TF)}}
 

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex	2023-04-19 20:13:27 UTC (rev 66896)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-03-30}
+\date{Released 2023-04-19}
 
 \newcommand{\TF}{\textit{(TF)}}
 

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2023-04-19 20:13:27 UTC (rev 66896)
@@ -53,7 +53,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2023-03-30}
+\date{Released 2023-04-19}
 
 \pagenumbering{roman}
 \maketitle

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -70,27 +70,27 @@
 %    \begin{macrocode}
 \ProvidesExplFile
 %<*dvipdfmx>
-  {l3backend-dvipdfmx.def}{2023-03-30}{}
+  {l3backend-dvipdfmx.def}{2023-04-19}{}
   {L3 backend support: dvipdfmx}
 %</dvipdfmx>
 %<*dvips>
-  {l3backend-dvips.def}{2023-03-30}{}
+  {l3backend-dvips.def}{2023-04-19}{}
   {L3 backend support: dvips}
 %</dvips>
 %<*dvisvgm>
-  {l3backend-dvisvgm.def}{2023-03-30}{}
+  {l3backend-dvisvgm.def}{2023-04-19}{}
   {L3 backend support: dvisvgm}
 %</dvisvgm>
 %<*luatex>
-  {l3backend-luatex.def}{2023-03-30}{}
+  {l3backend-luatex.def}{2023-04-19}{}
   {L3 backend support: PDF output (LuaTeX)}
 %</luatex>
 %<*pdftex>
-  {l3backend-pdftex.def}{2023-03-30}{}
+  {l3backend-pdftex.def}{2023-04-19}{}
   {L3 backend support: PDF output (pdfTeX)}
 %</pdftex>
 %<*xetex>
-  {l3backend-xetex.def}{2023-03-30}{}
+  {l3backend-xetex.def}{2023-04-19}{}
   {L3 backend support: XeTeX}
 %</xetex>
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -68,7 +68,7 @@
     \cs_if_exist:NTF \hook_gput_code:nnn
       {
         \hook_gput_code:nnn
-          { file / l3graphics.sty / after }
+          { package / l3graphics / after }
           { backend }
           {#1}
       }
@@ -148,7 +148,7 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{variable}{\l_@@_graphics_attr_tl}
+% \begin{variable}{\l_@@_attr_tl}
 %   In PDF mode, additional attributes of an graphic (such as page number) are
 %   needed both to obtain the bounding box and when inserting the graphic: this
 %   occurs as the graphic dictionary approach means they are read as part of
@@ -156,7 +156,7 @@
 %   attributes using a dedicated |tl| rather than build up the same data
 %   twice.
 %    \begin{macrocode}
-\tl_new:N \l_@@_graphics_attr_tl
+\tl_new:N \l_@@_attr_tl
 %    \end{macrocode}
 % \end{variable}
 %
@@ -185,14 +185,15 @@
   {
     \int_zero:N \l_@@_page_int
     \tl_clear:N \l_@@_pagebox_tl
-    \tl_set:Nx \l_@@_graphics_attr_tl
+    \tl_set:Nx \l_@@_attr_tl
       {
         \tl_if_empty:NF \l_@@_decodearray_str
           { :D \l_@@_decodearray_str }
         \bool_if:NT \l_@@_interpolate_bool
           { :I }
+        \str_if_empty:NF \l_@@_pdf_str
+          { :X \l_@@_pdf_str }
       }
-    \tl_clear:N \l_@@_graphics_attr_tl
     \@@_backend_getbb_auxi:n {#1}
   }
 \cs_new_eq:NN \@@_backend_getbb_jpeg:n \@@_backend_getbb_jpg:n
@@ -201,17 +202,19 @@
   {
     \tl_clear:N \l_@@_decodearray_str
     \bool_set_false:N \l_@@_interpolate_bool
-    \tl_set:Nx \l_@@_graphics_attr_tl
+    \tl_set:Nx \l_@@_attr_tl
       {
         : \l_@@_pagebox_tl
         \int_compare:nNnT \l_@@_page_int > 1
           { :P \int_use:N \l_@@_page_int }
+        \str_if_empty:NF \l_@@_pdf_str
+          { :X \l_@@_pdf_str }
       }
     \@@_backend_getbb_auxi:n {#1}
   }
 \cs_new_protected:Npn \@@_backend_getbb_auxi:n #1
   {
-    \@@_bb_restore:xF { #1 \l_@@_graphics_attr_tl }
+    \@@_bb_restore:xF { #1 \l_@@_attr_tl }
       { \@@_backend_getbb_auxii:n {#1} }
   }
 %    \end{macrocode}
@@ -225,17 +228,20 @@
   {
     \exp_args:Ne \@@_backend_getbb_auxiii:n
       { \@@_backend_dequote:w #1 " #1 " \s_@@_stop }
-    \int_const:cn { c_@@_ #1 \l_@@_graphics_attr_tl _int }
+    \int_const:cn { c_@@_ #1 \l_@@_attr_tl _int }
       { \tex_the:D \tex_pdflastximage:D }
-    \@@_bb_save:x { #1 \l_@@_graphics_attr_tl }
+    \@@_bb_save:x { #1 \l_@@_attr_tl }
   }
 \cs_new_protected:Npn \@@_backend_getbb_auxiii:n #1
   {
     \tex_immediate:D \tex_pdfximage:D
-      \bool_lazy_or:nnT
-        { \l_@@_interpolate_bool }
-        { ! \tl_if_empty_p:N \l_@@_decodearray_str }
+      \bool_lazy_any:nT
         {
+          { \l_@@_interpolate_bool }
+          { ! \tl_if_empty_p:N \l_@@_decodearray_str }
+          { ! \str_if_empty_p:N \l_@@_pdf_str }
+        }
+        {
           attr ~
             {
               \tl_if_empty:NF \l_@@_decodearray_str
@@ -242,6 +248,7 @@
                 { /Decode~[ \l_@@_decodearray_str ] }
               \bool_if:NT \l_@@_interpolate_bool
                 { /Interpolate~true }
+              \l_@@_pdf_str
             }
         }
       \int_compare:nNnT \l_@@_page_int > 0
@@ -274,7 +281,7 @@
 \cs_new_protected:Npn \@@_backend_include_jpg:n #1
   {
     \tex_pdfrefximage:D
-      \int_use:c { c_@@_ #1 \l_@@_graphics_attr_tl _int }
+      \int_use:c { c_@@_ #1 \l_@@_attr_tl _int }
   }
 \cs_new_eq:NN \@@_backend_include_jpeg:n \@@_backend_include_jpg:n
 \cs_new_eq:NN \@@_backend_include_pdf:n \@@_backend_include_jpg:n
@@ -522,7 +529,7 @@
               \tl_if_empty:NF \l_@@_decodearray_str
                 { /Decode~[ \l_@@_decodearray_str ] }
               \bool_if:NT \l_@@_interpolate_bool
-                { /Interpolate~true> }
+                { /Interpolate~true }
             >>
           }
       }

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -69,8 +69,12 @@
 % \subsection{Shared code}
 %
 % A very small number of items that belong at the backend level but which
-% are common to all backends.
+% are common to most backends.
 %
+%    \begin{macrocode}
+%<*!dvisvgm>
+%    \end{macrocode}
+%
 % \begin{variable}{\l_@@_internal_box}
 %    \begin{macrocode}
 \box_new:N \l_@@_internal_box
@@ -77,6 +81,10 @@
 %    \end{macrocode}
 % \end{variable}
 %
+%    \begin{macrocode}
+%</!dvisvgm>
+%    \end{macrocode}
+%
 % \subsection{\texttt{dvips} backend}
 %
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -122,7 +122,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3benchmark}{2023-03-30}{}
+\ProvidesExplPackage{l3benchmark}{2023-04-19}{}
   {L3 Experimental benchmarking}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 % \begin{documentation}
@@ -264,7 +264,7 @@
 %<@@=bitset>
 %    \end{macrocode}
 %    \begin{macrocode}
-\ProvidesExplPackage{l3bitset}{2023-03-30}{}
+\ProvidesExplPackage{l3bitset}{2023-04-19}{}
   {L3 Experimental bitset support}
 %    \end{macrocode}
 % A bitset is a string variable.

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -590,8 +590,10 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \draw_path_arc_axes:nnnn #1#2#3#4
   {
-    \draw_transform_triangle:nnn { 0cm , 0cm } {#3} {#4}
-    \draw_path_arc:nnn {#1} {#2} { 1pt }
+    \group_begin:
+      \draw_transform_triangle:nnn { 0cm , 0cm } {#3} {#4}
+      \draw_path_arc:nnn {#1} {#2} { 1pt }
+    \group_end:
   }
 %    \end{macrocode}
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -262,12 +262,12 @@
     \@@_point_process:nnn
       {
         \@@_point_process:nn
-          { \@@_tranform_triangle:nnnnnn }
+          { \@@_transform_triangle:nnnnnn }
           {#1}
       }
       {#2} {#3}
   }
-\cs_new_protected:Npn \@@_tranform_triangle:nnnnnn #1#2#3#4#5#6
+\cs_new_protected:Npn \@@_transform_triangle:nnnnnn #1#2#3#4#5#6
   {
     \use:x
       {

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -110,7 +110,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -340,7 +340,7 @@
 %     \draw_join_round:
 %   }
 %   \begin{syntax}
-%     \cs{draw_cap_butt:}
+%     \cs{draw_join_miter:}
 %   \end{syntax}
 %   Sets the style of stroke joins to one of bevel, miter or round.
 % \end{function}
@@ -1173,7 +1173,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2023-03-30}{}
+\ProvidesExplPackage{l3draw}{2023-04-19}{}
   {L3 Experimental core drawing support}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -22,9 +22,6 @@
 %
 % for those people who are interested.
 %
-%<*driver|package>
-\RequirePackage{expl3}
-%</driver|package>
 %<*driver>
 \documentclass[full]{l3doc}
 \begin{document}
@@ -46,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -81,6 +78,13 @@
 %   which may contain multiple pages.
 % \end{variable}
 %
+% \begin{variable}{pdf-attr}
+%   Additional PDF-focussed attributes: available to allow control of
+%   extended |.pdf| structures beyond those needed for graphic inclusion.
+%   Due to backend restrictions, this key is only functional with direct
+%   PDF mode (pdf\TeX{} and Lua\TeX{}).
+% \end{variable}
+%
 % \begin{variable}{pagebox}
 %   The nature of the page box setting used to determine the bounding box of
 %   material: used for |.pdf| files which feature multiple page box
@@ -88,11 +92,6 @@
 %   The standard setting is |crop|.
 % \end{variable}
 %
-% \begin{variable}{draft}
-%   Switch to enable draft mode: graphics are read but not included when this is
-%   true.
-% \end{variable}
-%
 % \begin{variable}{type}
 %   The type of graphic file beign included: if this key is not set, the
 %   \emph{type} is determined from the file extension.
@@ -185,7 +184,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3graphics}{2023-03-30}{}
+\ProvidesExplPackage{l3graphics}{2023-04-19}{}
   {L3 Experimental graphics inclusion support}
 %    \end{macrocode}
 %
@@ -214,6 +213,7 @@
 %     \l_@@_interpolate_bool ,
 %     \l_@@_page_int         ,
 %     \l_@@_pagebox_tl       ,
+%     \l_@@_pdf_str          ,
 %     \l_@@_type_str
 %   }
 %   Keys which control features of graphics. The standard value of |pagebox|
@@ -243,6 +243,8 @@
       crop ,
     page .int_set:N =
       \l_@@_page_int ,
+    pdf-attr .str_set:N =
+      \l_@@_pdf_str ,
     type . str_set:N =
       \l_@@_type_str
   }

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -96,7 +96,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3opacity}{2023-03-30}{}
+\ProvidesExplPackage{l3opacity}{2023-04-19}{}
   {L3 Experimental opacity support}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -48,7 +48,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -166,7 +166,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2023-03-30}{}
+\ProvidesExplPackage{l3str-format}{2023-04-19}{}
   {L3 Experimental string formatting}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -151,7 +151,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3sys-shell}{2023-03-30}{}
+\ProvidesExplPackage{l3sys-shell}{2023-04-19}{}
   {L3 Experimental system shell functions}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -53,7 +53,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -672,7 +672,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2023-03-30}{}
+\ProvidesExplPackage{xcoffins}{2023-04-19}{}
   {L3 Experimental design level coffins}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -61,7 +61,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -686,7 +686,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2023-03-30}{}
+\ProvidesExplPackage{l3galley}{2023-04-19}{}
   {L3 Experimental galley code}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -731,7 +731,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2023-03-30}{}
+\ProvidesExplPackage{xgalley}{2023-04-19}{}
   {L3 Experimental galley}
 \RequirePackage{xtemplate,l3galley}
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -24,7 +24,7 @@
 %
 %<*driver|generic|package|2ekernel>
 %</driver|generic|package|2ekernel>
-\def\ExplFileDate{2023-03-30}%
+\def\ExplFileDate{2023-04-19}%
 %<*driver>
 \documentclass[full]{l3doc}
 \usepackage{graphicx}
@@ -51,7 +51,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -874,6 +874,70 @@
 %   dependent on the height of the original and \emph{vice versa}.
 % \end{function}
 %
+% \section{Viewing part of a box}
+%
+% \begin{function}[updated = 2023-04-14]
+%   {
+%     \box_set_clipped:N, \box_set_clipped:c,
+%     \box_gset_clipped:N, \box_gset_clipped:c
+%   }
+%   \begin{syntax}
+%     \cs{box_set_clipped:N} \meta{box}
+%   \end{syntax}
+%   Clips the \meta{box} in the output so that only material inside the
+%   bounding box is displayed in the output. The updated \meta{box} is an
+%   hbox, irrespective of the nature of the \meta{box} before the clipping is
+%   applied. Additional box levels are also generated by this operation.
+%
+%   \begin{texnote}
+%     Clipping is implemented by the driver, and as such the full content of
+%     the box is placed in the output file. Thus clipping does not remove
+%     any information from the raw output, and hidden material can therefore
+%     be viewed by direct examination of the file.
+%   \end{texnote}
+% \end{function}
+%
+% \begin{function}[added = 2019-01-23]
+%   {
+%     \box_set_trim:Nnnnn, \box_set_trim:cnnnn,
+%     \box_gset_trim:Nnnnn, \box_gset_trim:cnnnn
+%   }
+%   \begin{syntax}
+%     \cs{box_set_trim:Nnnnn} \meta{box} \Arg{left} \Arg{bottom} \Arg{right} \Arg{top}
+%   \end{syntax}
+%   Adjusts the bounding box of the \meta{box} \meta{left} is removed from
+%   the left-hand edge of the bounding box, \meta{right} from the right-hand
+%   edge and so fourth. All adjustments are \meta{dim exprs}.
+%   Material outside of the bounding box is still displayed in the output
+%   unless \cs{box_set_clipped:N} is subsequently applied.
+%   The updated \meta{box} is an
+%   hbox, irrespective of the nature of the \meta{box} before the trim
+%   operation is applied.
+%   Additional box levels are also generated by this operation.
+%   The behavior of the operation where the trims requested is
+%   greater than the size of the box is undefined.
+% \end{function}
+%
+% \begin{function}[added = 2019-01-23]
+%   {
+%     \box_set_viewport:Nnnnn, \box_set_viewport:cnnnn,
+%     \box_gset_viewport:Nnnnn, \box_gset_viewport:cnnnn
+%   }
+%   \begin{syntax}
+%     \cs{box_set_viewport:Nnnnn} \meta{box} \Arg{llx} \Arg{lly} \Arg{urx} \Arg{ury}
+%   \end{syntax}
+%   Adjusts the bounding box of the \meta{box} such that it has lower-left
+%   co-ordinates (\meta{llx}, \meta{lly}) and upper-right co-ordinates
+%   (\meta{urx}, \meta{ury}). All four co-ordinate positions are
+%   \meta{dim exprs}. Material outside of the bounding box is
+%   still displayed in the output unless \cs{box_set_clipped:N} is
+%   subsequently applied.
+%   The updated \meta{box} is an
+%   hbox, irrespective of the nature of the \meta{box} before the viewport
+%   operation is applied.
+%   Additional box levels are also generated by this operation.
+% \end{function}
+%
 % \section{Primitive box conditionals}
 %
 % \begin{function}[EXP]{\if_hbox:N}
@@ -2298,7 +2362,164 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \subsection{Viewing part of a box}
+%
+% \begin{macro}{\box_set_clipped:N, \box_set_clipped:c, \box_gset_clipped:N, \box_gset_clipped:c}
+%   A wrapper around the driver-dependent code.
 %    \begin{macrocode}
+\cs_new_protected:Npn \box_set_clipped:N #1
+  { \hbox_set:Nn #1 { \@@_backend_clip:N #1 } }
+\cs_generate_variant:Nn \box_set_clipped:N { c }
+\cs_new_protected:Npn \box_gset_clipped:N #1
+  { \hbox_gset:Nn #1 { \@@_backend_clip:N #1 } }
+\cs_generate_variant:Nn \box_gset_clipped:N { c }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}
+%   {
+%     \box_set_trim:Nnnnn, \box_set_trim:cnnnn,
+%     \box_gset_trim:Nnnnn, \box_gset_trim:cnnnn
+%   }
+% \begin{macro}{\@@_set_trim:NnnnnN}
+%   Trimming from the left- and right-hand edges of the box is easy: kern the
+%   appropriate parts off each side.
+%    \begin{macrocode}
+\cs_new_protected:Npn \box_set_trim:Nnnnn #1#2#3#4#5
+  { \@@_set_trim:NnnnnN #1 {#2} {#3} {#4} {#5} \box_set_eq:NN }
+\cs_generate_variant:Nn \box_set_trim:Nnnnn { c }
+\cs_new_protected:Npn \box_gset_trim:Nnnnn #1#2#3#4#5
+  { \@@_set_trim:NnnnnN #1 {#2} {#3} {#4} {#5} \box_gset_eq:NN }
+\cs_generate_variant:Nn \box_gset_trim:Nnnnn { c }
+\cs_new_protected:Npn \@@_set_trim:NnnnnN #1#2#3#4#5#6
+  {
+    \hbox_set:Nn \l_@@_internal_box
+      {
+        \__kernel_kern:n { -#2 }
+        \box_use:N #1
+        \__kernel_kern:n { -#4 }
+      }
+%    \end{macrocode}
+%   For the height and depth, there is a need to watch the baseline is
+%   respected. Material always has to stay on the correct side, so trimming
+%   has to check that there is enough material to trim. First, the bottom
+%   edge. If there is enough depth, simply set the depth, or if not move
+%   down so the result is zero depth. \cs{box_move_down:nn} is used in both
+%   cases so the resulting box always contains a \tn{lower} primitive.
+%   The internal box is used here as it allows safe use of \cs{box_set_dp:Nn}.
+%    \begin{macrocode}
+    \dim_compare:nNnTF { \box_dp:N #1 } > {#3}
+      {
+        \hbox_set:Nn \l_@@_internal_box
+          {
+            \box_move_down:nn \c_zero_dim
+              { \box_use_drop:N \l_@@_internal_box }
+          }
+        \box_set_dp:Nn \l_@@_internal_box { \box_dp:N #1 - (#3) }
+      }
+      {
+        \hbox_set:Nn \l_@@_internal_box
+          {
+            \box_move_down:nn { (#3) - \box_dp:N #1 }
+              { \box_use_drop:N \l_@@_internal_box }
+          }
+        \box_set_dp:Nn \l_@@_internal_box \c_zero_dim
+      }
+%    \end{macrocode}
+%   Same thing, this time from the top of the box.
+%    \begin{macrocode}
+    \dim_compare:nNnTF { \box_ht:N \l_@@_internal_box } > {#5}
+      {
+        \hbox_set:Nn \l_@@_internal_box
+          {
+            \box_move_up:nn \c_zero_dim
+              { \box_use_drop:N \l_@@_internal_box }
+          }
+        \box_set_ht:Nn \l_@@_internal_box
+          { \box_ht:N \l_@@_internal_box - (#5) }
+      }
+      {
+        \hbox_set:Nn \l_@@_internal_box
+          {
+            \box_move_up:nn { (#5) - \box_ht:N \l_@@_internal_box }
+              { \box_use_drop:N \l_@@_internal_box }
+          }
+        \box_set_ht:Nn \l_@@_internal_box \c_zero_dim
+      }
+    #6 #1 \l_@@_internal_box
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}
+%   {
+%     \box_set_viewport:Nnnnn, \box_set_viewport:cnnnn,
+%     \box_gset_viewport:Nnnnn, \box_gset_viewport:cnnnn
+%   }
+% \begin{macro}{\@@_viewport:NnnnnN}
+%   The same general logic as for the trim operation, but with absolute
+%   dimensions. As a result, there are some things to watch out for in the
+%   vertical direction.
+%    \begin{macrocode}
+\cs_new_protected:Npn \box_set_viewport:Nnnnn #1#2#3#4#5
+  { \@@_set_viewport:NnnnnN #1 {#2} {#3} {#4} {#5} \box_set_eq:NN }
+\cs_generate_variant:Nn \box_set_viewport:Nnnnn { c }
+\cs_new_protected:Npn \box_gset_viewport:Nnnnn #1#2#3#4#5
+  { \@@_set_viewport:NnnnnN #1 {#2} {#3} {#4} {#5} \box_gset_eq:NN }
+\cs_generate_variant:Nn \box_gset_viewport:Nnnnn { c }
+\cs_new_protected:Npn \@@_set_viewport:NnnnnN #1#2#3#4#5#6
+  {
+    \hbox_set:Nn \l_@@_internal_box
+      {
+        \__kernel_kern:n { -#2 }
+        \box_use:N #1
+        \__kernel_kern:n { #4 - \box_wd:N #1 }
+      }
+    \dim_compare:nNnTF {#3} < \c_zero_dim
+      {
+        \hbox_set:Nn \l_@@_internal_box
+          {
+            \box_move_down:nn \c_zero_dim
+              { \box_use_drop:N \l_@@_internal_box }
+          }
+        \box_set_dp:Nn \l_@@_internal_box { - \@@_dim_eval:n {#3} }
+      }
+      {
+        \hbox_set:Nn \l_@@_internal_box
+          { \box_move_down:nn {#3} { \box_use_drop:N \l_@@_internal_box } }
+        \box_set_dp:Nn \l_@@_internal_box \c_zero_dim
+      }
+    \dim_compare:nNnTF {#5} > \c_zero_dim
+      {
+        \hbox_set:Nn \l_@@_internal_box
+          {
+            \box_move_up:nn \c_zero_dim
+              { \box_use_drop:N \l_@@_internal_box }
+          }
+        \box_set_ht:Nn \l_@@_internal_box
+          {
+            (#5)
+            \dim_compare:nNnT {#3} > \c_zero_dim
+              { - (#3) }
+          }
+      }
+      {
+        \hbox_set:Nn \l_@@_internal_box
+          {
+            \box_move_up:nn { - \@@_dim_eval:n {#5} }
+              { \box_use_drop:N \l_@@_internal_box }
+          }
+        \box_set_ht:Nn \l_@@_internal_box \c_zero_dim
+      }
+    #6 #1 \l_@@_internal_box
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+
+%
+%    \begin{macrocode}
 %</package>
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -84,68 +84,6 @@
 % into the kernel. However, real use sometimes leads to better ideas, so functions from this module are
 % \textbf{not necessarily stable} and we may have to adjust them!
 %
-% \section{Additions to \pkg{l3box}}
-%
-% \begin{function}[updated = 2019-01-23]
-%   {\box_clip:N, \box_clip:c, \box_gclip:N, \box_gclip:c}
-%   \begin{syntax}
-%     \cs{box_clip:N} \meta{box}
-%   \end{syntax}
-%   Clips the \meta{box} in the output so that only material inside the
-%   bounding box is displayed in the output. The updated \meta{box} is an
-%   hbox, irrespective of the nature of the \meta{box} before the clipping is
-%   applied.
-%
-%   \textbf{These functions require the \LaTeX3 native drivers: they do
-%   not work with the \LaTeXe{} \pkg{graphics} drivers!}
-%
-%   \begin{texnote}
-%     Clipping is implemented by the driver, and as such the full content of
-%     the box is placed in the output file. Thus clipping does not remove
-%     any information from the raw output, and hidden material can therefore
-%     be viewed by direct examination of the file.
-%   \end{texnote}
-% \end{function}
-%
-% \begin{function}[added = 2019-01-23]
-%   {
-%     \box_set_trim:Nnnnn, \box_set_trim:cnnnn,
-%     \box_gset_trim:Nnnnn, \box_gset_trim:cnnnn
-%   }
-%   \begin{syntax}
-%     \cs{box_set_trim:Nnnnn} \meta{box} \Arg{left} \Arg{bottom} \Arg{right} \Arg{top}
-%   \end{syntax}
-%   Adjusts the bounding box of the \meta{box} \meta{left} is removed from
-%   the left-hand edge of the bounding box, \meta{right} from the right-hand
-%   edge and so fourth. All adjustments are \meta{dim exprs}.
-%   Material outside of the bounding box is still displayed in the output
-%   unless \cs{box_clip:N} is subsequently applied.
-%   The updated \meta{box} is an
-%   hbox, irrespective of the nature of the \meta{box} before the trim
-%   operation is applied.
-%   The behavior of the operation where the trims requested is
-%   greater than the size of the box is undefined.
-% \end{function}
-%
-% \begin{function}[added = 2019-01-23]
-%   {
-%     \box_set_viewport:Nnnnn, \box_set_viewport:cnnnn,
-%     \box_gset_viewport:Nnnnn, \box_gset_viewport:cnnnn
-%   }
-%   \begin{syntax}
-%     \cs{box_set_viewport:Nnnnn} \meta{box} \Arg{llx} \Arg{lly} \Arg{urx} \Arg{ury}
-%   \end{syntax}
-%   Adjusts the bounding box of the \meta{box} such that it has lower-left
-%   co-ordinates (\meta{llx}, \meta{lly}) and upper-right co-ordinates
-%   (\meta{urx}, \meta{ury}). All four co-ordinate positions are
-%   \meta{dim exprs}. Material outside of the bounding box is
-%   still displayed in the output unless \cs{box_clip:N} is
-%   subsequently applied.
-%   The updated \meta{box} is an
-%   hbox, irrespective of the nature of the \meta{box} before the viewport
-%   operation is applied.
-% \end{function}
-%
 % \section{Additions to \pkg{l3expan}}
 %
 % \begin{function}[added = 2018-04-04, updated = 2019-02-08]
@@ -669,168 +607,6 @@
 %<*package>
 %    \end{macrocode}
 %
-% \subsection{Additions to \pkg{l3box}}
-%
-%    \begin{macrocode}
-%<@@=box>
-%    \end{macrocode}
-%
-% \subsubsection{Viewing part of a box}
-%
-% \begin{macro}{\box_clip:N, \box_clip:c, \box_gclip:N, \box_gclip:c}
-%   A wrapper around the driver-dependent code.
-%    \begin{macrocode}
-\cs_new_protected:Npn \box_clip:N #1
-  { \hbox_set:Nn #1 { \@@_backend_clip:N #1 } }
-\cs_generate_variant:Nn \box_clip:N { c }
-\cs_new_protected:Npn \box_gclip:N #1
-  { \hbox_gset:Nn #1 { \@@_backend_clip:N #1 } }
-\cs_generate_variant:Nn \box_gclip:N { c }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}
-%   {
-%     \box_set_trim:Nnnnn, \box_set_trim:cnnnn,
-%     \box_gset_trim:Nnnnn, \box_gset_trim:cnnnn
-%   }
-% \begin{macro}{\@@_set_trim:NnnnnN}
-%   Trimming from the left- and right-hand edges of the box is easy: kern the
-%   appropriate parts off each side.
-%    \begin{macrocode}
-\cs_new_protected:Npn \box_set_trim:Nnnnn #1#2#3#4#5
-  { \@@_set_trim:NnnnnN #1 {#2} {#3} {#4} {#5} \box_set_eq:NN }
-\cs_generate_variant:Nn \box_set_trim:Nnnnn { c }
-\cs_new_protected:Npn \box_gset_trim:Nnnnn #1#2#3#4#5
-  { \@@_set_trim:NnnnnN #1 {#2} {#3} {#4} {#5} \box_gset_eq:NN }
-\cs_generate_variant:Nn \box_gset_trim:Nnnnn { c }
-\cs_new_protected:Npn \@@_set_trim:NnnnnN #1#2#3#4#5#6
-  {
-    \hbox_set:Nn \l_@@_internal_box
-      {
-        \__kernel_kern:n { -#2 }
-        \box_use:N #1
-        \__kernel_kern:n { -#4 }
-      }
-%    \end{macrocode}
-%   For the height and depth, there is a need to watch the baseline is
-%   respected. Material always has to stay on the correct side, so trimming
-%   has to check that there is enough material to trim. First, the bottom
-%   edge. If there is enough depth, simply set the depth, or if not move
-%   down so the result is zero depth. \cs{box_move_down:nn} is used in both
-%   cases so the resulting box always contains a \tn{lower} primitive.
-%   The internal box is used here as it allows safe use of \cs{box_set_dp:Nn}.
-%    \begin{macrocode}
-    \dim_compare:nNnTF { \box_dp:N #1 } > {#3}
-      {
-        \hbox_set:Nn \l_@@_internal_box
-          {
-            \box_move_down:nn \c_zero_dim
-              { \box_use_drop:N \l_@@_internal_box }
-          }
-        \box_set_dp:Nn \l_@@_internal_box { \box_dp:N #1 - (#3) }
-      }
-      {
-        \hbox_set:Nn \l_@@_internal_box
-          {
-            \box_move_down:nn { (#3) - \box_dp:N #1 }
-              { \box_use_drop:N \l_@@_internal_box }
-          }
-        \box_set_dp:Nn \l_@@_internal_box \c_zero_dim
-      }
-%    \end{macrocode}
-%   Same thing, this time from the top of the box.
-%    \begin{macrocode}
-    \dim_compare:nNnTF { \box_ht:N \l_@@_internal_box } > {#5}
-      {
-        \hbox_set:Nn \l_@@_internal_box
-          {
-            \box_move_up:nn \c_zero_dim
-              { \box_use_drop:N \l_@@_internal_box }
-          }
-        \box_set_ht:Nn \l_@@_internal_box
-          { \box_ht:N \l_@@_internal_box - (#5) }
-      }
-      {
-        \hbox_set:Nn \l_@@_internal_box
-          {
-            \box_move_up:nn { (#5) - \box_ht:N \l_@@_internal_box }
-              { \box_use_drop:N \l_@@_internal_box }
-          }
-        \box_set_ht:Nn \l_@@_internal_box \c_zero_dim
-      }
-    #6 #1 \l_@@_internal_box
-  }
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}
-%   {
-%     \box_set_viewport:Nnnnn, \box_set_viewport:cnnnn,
-%     \box_gset_viewport:Nnnnn, \box_gset_viewport:cnnnn
-%   }
-% \begin{macro}{\@@_viewport:NnnnnN}
-%   The same general logic as for the trim operation, but with absolute
-%   dimensions. As a result, there are some things to watch out for in the
-%   vertical direction.
-%    \begin{macrocode}
-\cs_new_protected:Npn \box_set_viewport:Nnnnn #1#2#3#4#5
-  { \@@_set_viewport:NnnnnN #1 {#2} {#3} {#4} {#5} \box_set_eq:NN }
-\cs_generate_variant:Nn \box_set_viewport:Nnnnn { c }
-\cs_new_protected:Npn \box_gset_viewport:Nnnnn #1#2#3#4#5
-  { \@@_set_viewport:NnnnnN #1 {#2} {#3} {#4} {#5} \box_gset_eq:NN }
-\cs_generate_variant:Nn \box_gset_viewport:Nnnnn { c }
-\cs_new_protected:Npn \@@_set_viewport:NnnnnN #1#2#3#4#5#6
-  {
-    \hbox_set:Nn \l_@@_internal_box
-      {
-        \__kernel_kern:n { -#2 }
-        \box_use:N #1
-        \__kernel_kern:n { #4 - \box_wd:N #1 }
-      }
-    \dim_compare:nNnTF {#3} < \c_zero_dim
-      {
-        \hbox_set:Nn \l_@@_internal_box
-          {
-            \box_move_down:nn \c_zero_dim
-              { \box_use_drop:N \l_@@_internal_box }
-          }
-        \box_set_dp:Nn \l_@@_internal_box { - \@@_dim_eval:n {#3} }
-      }
-      {
-        \hbox_set:Nn \l_@@_internal_box
-          { \box_move_down:nn {#3} { \box_use_drop:N \l_@@_internal_box } }
-        \box_set_dp:Nn \l_@@_internal_box \c_zero_dim
-      }
-    \dim_compare:nNnTF {#5} > \c_zero_dim
-      {
-        \hbox_set:Nn \l_@@_internal_box
-          {
-            \box_move_up:nn \c_zero_dim
-              { \box_use_drop:N \l_@@_internal_box }
-          }
-        \box_set_ht:Nn \l_@@_internal_box
-          {
-            (#5)
-            \dim_compare:nNnT {#3} > \c_zero_dim
-              { - (#3) }
-          }
-      }
-      {
-        \hbox_set:Nn \l_@@_internal_box
-          {
-            \box_move_up:nn { - \@@_dim_eval:n {#5} }
-              { \box_use_drop:N \l_@@_internal_box }
-          }
-        \box_set_ht:Nn \l_@@_internal_box \c_zero_dim
-      }
-    #6 #1 \l_@@_internal_box
-  }
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
 % \subsection{Additions to \pkg{l3flag}}
 %
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -85,7 +85,7 @@
 %    require you to do updates, if the class changes.}}
 %
 % \author{\Team}
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 % \maketitle
 % \tableofcontents
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -49,7 +49,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -489,7 +489,7 @@
 % \begin{macro}{\pdf_pagesize_gset:nn}
 %    \begin{macrocode}
 \cs_new_protected:Npn \pdf_pagesize_gset:nn #1#2
-  { \@@_pagesize_gset:nn {#1} {#2} }
+  { \@@_backend_pagesize_gset:nn {#1} {#2} }
 %    \end{macrocode}
 % \end{macro}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -153,7 +153,7 @@
 % \begin{macro}[EXP]{\@@_change_case_exclude:nnNw}
 % \begin{macro}[EXP]{\@@_change_case_exclude:nnNnn}
 % \begin{macro}[EXP]{\@@_change_case_replace:nnN}
-% \begin{macro}[EXP]{\@@_change_case_replace:nnn}
+% \begin{macro}[EXP]{\@@_change_case_replace:nnn, \@@_change_case_replace:vnn}
 % \begin{macro}[EXP]{\@@_change_case_switch:nnN}
 % \begin{macro}[EXP]
 %   {
@@ -172,6 +172,14 @@
 % \begin{macro}[EXP]{\@@_change_case_letterlike:nnnnN}
 % \begin{macro}[EXP]
 %   {
+%     \@@_change_case_custom_lower:nnn ,
+%     \@@_change_case_custom_title:nnn ,
+%     \@@_change_case_custom_upper:nnn ,
+%     \@@_change_case_custom_titleonly:nnn
+%   }
+% \begin{macro}[EXP]{\@@_change_case_custom:nnn}
+% \begin{macro}[EXP]
+%   {
 %     \@@_change_case_codepoint_lower:nnn ,
 %     \@@_change_case_codepoint_upper:nnn ,
 %     \@@_change_case_codepoint_title:nnn ,
@@ -439,7 +447,7 @@
       { \@@_change_case_exclude:nnN {#1} {#2} }
       {
         \@@_codepoint_process:nN
-          { \use:c { @@_change_case_codepoint_ #1 :nnn } {#1} {#2} }
+          { \use:c { @@_change_case_custom_ #1 :nnn } {#1} {#2} }
       }
         #3
   }
@@ -497,7 +505,7 @@
   {
     \cs_if_exist:cTF { l_@@_case_ \token_to_str:N #3 _tl }
       {
-        \exp_args:Nv \@@_change_case_replace:nnn
+        \@@_change_case_replace:vnn
           { l_@@_case_ \token_to_str:N #3 _tl } {#1} {#2}
       }
       { \@@_change_case_switch:nnN {#1} {#2} #3 }
@@ -504,6 +512,7 @@
   }
 \cs_new:Npn \@@_change_case_replace:nnn #1#2#3
   { \@@_change_case_loop:nnw {#2} {#3} #1 }
+\cs_generate_variant:Nn \@@_change_case_replace:nnn { v }
 %    \end{macrocode}
 %   Allow for manually-controlled case switching.
 %    \begin{macrocode}
@@ -570,6 +579,42 @@
       }
   }
 %    \end{macrocode}
+%  Check for a customised codepoint result.
+%    \begin{macrocode}
+\cs_new:Npn \@@_change_case_custom_lower:nnn #1#2#3
+  {
+    \@@_change_case_custom:nnnnn {#1} {#2} {#3} {#1}
+      { \use:c { @@_change_case_codepoint_ #1 :nnn } {#1} {#2} {#3} }
+  }
+\cs_new_eq:NN \@@_change_case_custom_upper:nnn
+  \@@_change_case_custom_lower:nnn
+\cs_new:Npn \@@_change_case_custom_title:nnn #1#2#3
+  {
+    \@@_change_case_custom:nnnnn { title } {#2} {#3} {#1}
+      {
+        \@@_change_case_custom:nnnnn { upper } {#2} {#3} {#1}
+          { \use:c { @@_change_case_codepoint_ #1 :nnn } {#1} {#2} {#3} }
+      }
+  }
+\cs_new_eq:NN \@@_change_case_custom_titleonly:nnn
+  \@@_change_case_custom_title:nnn
+\cs_new:Npn \@@_change_case_custom:nnnnn #1#2#3#4#5
+  {
+    \tl_if_exist:cTF { l_@@_ #1 case _ \tl_to_str:n {#3} _ #2 _tl }
+      {
+        \@@_change_case_replace:vnn
+          { l_@@_ #1 case _ \tl_to_str:n {#3} _ #2 _tl } {#4} {#2}
+      }
+      {
+        \tl_if_exist:cTF { l_@@_ #1 case _ \tl_to_str:n {#3} _tl }
+          {
+            \@@_change_case_replace:vnn
+              { l_@@_ #1 case _ \tl_to_str:n {#3} _tl } {#4} {#2}
+          }
+          {#5}
+      }
+  }
+%    \end{macrocode}
 %   For upper- and lowercase changes, once we get to this stage there are only
 %   a couple of questions remaining: is there a language-specific mapping and
 %   is there the special case of a terminal sigma. If not, then we pass to
@@ -806,6 +851,8 @@
 % \end{macro}
 % \end{macro}
 % \end{macro}
+% \end{macro}
+% \end{macro}
 %
 % \begin{macro}{\text_declare_case_equivalent:Nn}
 %  Create equivalents to allow replacement.
@@ -818,6 +865,62 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}
+%   {
+%     \text_declare_lowercase_mapping:nn ,
+%     \text_declare_titlecase_mapping:nn ,
+%     \text_declare_uppercase_mapping:nn
+%   }
+% \begin{macro}
+%   {\@@_declare_case_mapping:nnn, \@@_declare_case_mapping_aux:nnn}
+% \begin{macro}
+%   {
+%     \text_declare_lowercase_mapping:nnn ,
+%     \text_declare_titlecase_mapping:nnn ,
+%     \text_declare_uppercase_mapping:nnn
+%   }
+% \begin{macro}
+%   {\@@_declare_case_mapping:nnnn, \@@_declare_case_mapping_aux:nnnn}
+%   Codepoint customisation.
+%    \begin{macrocode}
+\cs_new_protected:Npn \text_declare_lowercase_mapping:nn #1#2
+  { \@@_declare_case_mapping:nnn { lower } {#1} {#2} }
+\cs_new_protected:Npn \text_declare_titlecase_mapping:nn #1#2
+  { \@@_declare_case_mapping:nnn { title } {#1} {#2} }
+\cs_new_protected:Npn \text_declare_uppercase_mapping:nn #1#2
+  { \@@_declare_case_mapping:nnn { upper } {#1} {#2} }
+\cs_new_protected:Npn \@@_declare_case_mapping:nnn #1#2#3
+  {
+    \exp_args:Ne \@@_declare_case_mapping_aux:nnn
+      { \codepoint_str_generate:n {#2} } {#1} {#3}
+  }
+\cs_new_protected:Npn \@@_declare_case_mapping_aux:nnn #1#2#3
+  {
+    \tl_clear_new:c { l_@@_ #2 case _ #1 _tl }
+    \tl_set:cn { l_@@_ #2 case _ #1 _ tl } {#3}
+  }
+\cs_new_protected:Npn \text_declare_lowercase_mapping:nnn #1#2#3
+  { \@@_declare_case_mapping:nnnn { lower } {#1} {#2} {#3} }
+\cs_new_protected:Npn \text_declare_titlecase_mapping:nnn #1#2#3
+  { \@@_declare_case_mapping:nnnn { title } {#1} {#2} {#3} }
+\cs_new_protected:Npn \text_declare_uppercase_mapping:nnn #1#2#3
+  { \@@_declare_case_mapping:nnnn { upper } {#1} {#2} {#3} }
+\cs_new_protected:Npn \@@_declare_case_mapping:nnnn #1#2#3#4
+  {
+    \exp_args:Ne \@@_declare_case_mapping_aux:nnnn
+      { \codepoint_str_generate:n {#2} } {#1} {#3} {#4}
+  }
+\cs_new_protected:Npn \@@_declare_case_mapping_aux:nnnn #1#2#3#4
+  {
+    \tl_clear_new:c { l_@@_ #2 case _ #1 _ #3 _tl }
+    \tl_set:cn { l_@@_ #2 case _ #1 _ #3 _ tl } {#4}
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
 % \begin{macro}{\text_case_switch:nnnn}
 % \begin{macro}{\@@_case_switch_marker:}
 %   Set up the mechanism for manual case switching.
@@ -2038,7 +2141,18 @@
   }
 %    \end{macrocode}
 %
+% A few adjustments to case mapping for combining chars: these are not needed
+% for the Unicode engines
 %    \begin{macrocode}
+\bool_lazy_or:nnF
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+   \text_declare_uppercase_mapping:nn { "01F0 } { \v { J } }
+ }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 %</package>
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %
@@ -102,7 +102,7 @@
 %   }
 %   \begin{syntax}
 %     \cs{text_uppercase:n}  \Arg{tokens}
-%     \cs{text_uppercase:nn} \Arg{language} \Arg{tokens}
+%     \cs{text_uppercase:nn} \Arg{BCP-47} \Arg{tokens}
 %   \end{syntax}
 %   Takes user input \meta{text} first applies \cs{text_expand}, then
 %   transforms the case of character tokens as specified by the
@@ -145,9 +145,9 @@
 %   \texttt{SpecialCasing.txt}. For \pTeX{}, only the ASCII range is
 %   covered as the engine treats input outside of this range as east Asian.
 %
-%   Language-sensitive conversions are enabled using the \meta{language}
+%   Locale-sensitive conversions are enabled using the \meta{BCP-47}
 %   argument, and follow Unicode Consortium guidelines. Currently, the
-%   languages recognised for special handling are as follows.
+%   locale strings recognized for special handling are as follows.
 %   \begin{itemize}
 %     \item Armenian (\texttt{hy} and \texttt{hy-x-yiwn})
 %       The setting \texttt{hy} maps the codepoint U+0587, the ligature of
@@ -172,7 +172,6 @@
 %       which converts the \textit{ypogegrammeni} (subscript muted iota)
 %       to capital iota when uppercasing: the standard version retains the
 %       subscript versions.
-%       capital iota.
 %     \item Lithuanian (\texttt{lt}).
 %       The lowercase letters i and j should retain a dot above when the
 %       accents grave, acute or tilde are present. This is implemented for
@@ -181,7 +180,7 @@
 %       combining dot is removed when uppercasing in these cases. Note that
 %       \emph{only} the accents used in Lithuanian are covered: the behaviour
 %       of other accents are not modified.
-%     \item Medieval Latin (\texttt{la-xmedieval}).
+%     \item Medieval Latin (\texttt{la-x-medieval}).
 %      The characters |u| and |V| are interchanged on case changing.
 %     \item Dutch (\texttt{nl}).
 %       Capitalisation of \texttt{ij} at the beginning of titlecased
@@ -217,6 +216,26 @@
 %   \meta{cmd} (a single token) is encountered during case changing.
 % \end{function}
 %
+% \begin{function}[added = 2023-04-11]
+%   {
+%     \text_declare_lowercase_mapping:nn  ,
+%     \text_declare_lowercase_mapping:nnn ,
+%     \text_declare_titlecase_mapping:nn  ,
+%     \text_declare_titlecase_mapping:nnn ,
+%     \text_declare_uppercase_mapping:nn  ,
+%     \text_declare_uppercase_mapping:nnn
+%   }
+%   \begin{syntax}
+%     \cs{text_declare_lowercase_mapping:nn} \Arg{codeppoint}  \Arg{replacement}
+%     \cs{text_declare_lowercase_mapping:nnn} \Arg{codeppoint} \Arg{BCP-47} \Arg{replacement}
+%   \end{syntax}
+%   Declares that the \meta{replacement} tokens should be used when case mapping
+%   the \meta{codepoint}, rather than the standard mapping given in the
+%   Unicode data files. The \texttt{nnn} version takes a BCP-47 tag, which
+%   can be used to specify that the customisation only applies to that
+%   locale.
+% \end{function}
+%
 % \begin{function}[EXP, added = 2022-07-04]{\text_case_switch:nnnn}
 %   \begin{syntax}
 %     \cs{text_case_switch:nnnn} \Arg{normal} \Arg{upper} \Arg{lower} \Arg{title}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-03-30}
+% \date{Released 2023-04-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def	2023-04-19 20:13:27 UTC (rev 66896)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvipdfmx.def}{2023-03-30}{}
+  {l3backend-dvipdfmx.def}{2023-04-19}{}
   {L3 backend support: dvipdfmx}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -488,7 +488,7 @@
     \cs_if_exist:NTF \hook_gput_code:nnn
       {
         \hook_gput_code:nnn
-          { file / l3graphics.sty / after }
+          { package / l3graphics / after }
           { backend }
           {#1}
       }
@@ -592,7 +592,7 @@
               \tl_if_empty:NF \l__graphics_decodearray_str
                 { /Decode~[ \l__graphics_decodearray_str ] }
               \bool_if:NT \l__graphics_interpolate_bool
-                { /Interpolate~true> }
+                { /Interpolate~true }
             >>
           }
       }

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def	2023-04-19 20:13:27 UTC (rev 66896)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvips.def}{2023-03-30}{}
+  {l3backend-dvips.def}{2023-04-19}{}
   {L3 backend support: dvips}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -584,7 +584,7 @@
     \cs_if_exist:NTF \hook_gput_code:nnn
       {
         \hook_gput_code:nnn
-          { file / l3graphics.sty / after }
+          { package / l3graphics / after }
           { backend }
           {#1}
       }

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def	2023-04-19 20:13:27 UTC (rev 66896)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvisvgm.def}{2023-03-30}{}
+  {l3backend-dvisvgm.def}{2023-04-19}{}
   {L3 backend support: dvisvgm}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -479,7 +479,7 @@
     \cs_if_exist:NTF \hook_gput_code:nnn
       {
         \hook_gput_code:nnn
-          { file / l3graphics.sty / after }
+          { package / l3graphics / after }
           { backend }
           {#1}
       }
@@ -629,7 +629,6 @@
 \__graphics_backend_loaded:n
   { \cs_new_eq:NN \__graphics_backend_get_pagecount:n \__graphics_get_pagecount:n }
 %% File: l3backend-pdf.dtx
-\box_new:N \l__pdf_internal_box
 \cs_new_protected:Npn \__pdf_backend_annotation:nnnn #1#2#3#4 { }
 \cs_new:Npn \__pdf_backend_annotation_last: { }
 \cs_new_protected:Npn \__pdf_backend_link_begin_goto:nnw #1#2 { }

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def	2023-04-19 20:13:27 UTC (rev 66896)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-luatex.def}{2023-03-30}{}
+  {l3backend-luatex.def}{2023-04-19}{}
   {L3 backend support: PDF output (LuaTeX)}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -493,7 +493,7 @@
     \cs_if_exist:NTF \hook_gput_code:nnn
       {
         \hook_gput_code:nnn
-          { file / l3graphics.sty / after }
+          { package / l3graphics / after }
           { backend }
           {#1}
       }
@@ -505,19 +505,20 @@
       \l_graphics_search_ext_seq
       { .pdf , .eps , .ps , .png , .jpg , .jpeg  }
   }
-\tl_new:N \l__graphics_graphics_attr_tl
+\tl_new:N \l__graphics_attr_tl
 \cs_new_protected:Npn \__graphics_backend_getbb_jpg:n #1
   {
     \int_zero:N \l__graphics_page_int
     \tl_clear:N \l__graphics_pagebox_tl
-    \tl_set:Nx \l__graphics_graphics_attr_tl
+    \tl_set:Nx \l__graphics_attr_tl
       {
         \tl_if_empty:NF \l__graphics_decodearray_str
           { :D \l__graphics_decodearray_str }
         \bool_if:NT \l__graphics_interpolate_bool
           { :I }
+        \str_if_empty:NF \l__graphics_pdf_str
+          { :X \l__graphics_pdf_str }
       }
-    \tl_clear:N \l__graphics_graphics_attr_tl
     \__graphics_backend_getbb_auxi:n {#1}
   }
 \cs_new_eq:NN \__graphics_backend_getbb_jpeg:n \__graphics_backend_getbb_jpg:n
@@ -526,17 +527,19 @@
   {
     \tl_clear:N \l__graphics_decodearray_str
     \bool_set_false:N \l__graphics_interpolate_bool
-    \tl_set:Nx \l__graphics_graphics_attr_tl
+    \tl_set:Nx \l__graphics_attr_tl
       {
         : \l__graphics_pagebox_tl
         \int_compare:nNnT \l__graphics_page_int > 1
           { :P \int_use:N \l__graphics_page_int }
+        \str_if_empty:NF \l__graphics_pdf_str
+          { :X \l__graphics_pdf_str }
       }
     \__graphics_backend_getbb_auxi:n {#1}
   }
 \cs_new_protected:Npn \__graphics_backend_getbb_auxi:n #1
   {
-    \__graphics_bb_restore:xF { #1 \l__graphics_graphics_attr_tl }
+    \__graphics_bb_restore:xF { #1 \l__graphics_attr_tl }
       { \__graphics_backend_getbb_auxii:n {#1} }
   }
 \cs_new_protected:Npn \__graphics_backend_getbb_auxii:n #1
@@ -543,17 +546,20 @@
   {
     \exp_args:Ne \__graphics_backend_getbb_auxiii:n
       { \__graphics_backend_dequote:w #1 " #1 " \s__graphics_stop }
-    \int_const:cn { c__graphics_ #1 \l__graphics_graphics_attr_tl _int }
+    \int_const:cn { c__graphics_ #1 \l__graphics_attr_tl _int }
       { \tex_the:D \tex_pdflastximage:D }
-    \__graphics_bb_save:x { #1 \l__graphics_graphics_attr_tl }
+    \__graphics_bb_save:x { #1 \l__graphics_attr_tl }
   }
 \cs_new_protected:Npn \__graphics_backend_getbb_auxiii:n #1
   {
     \tex_immediate:D \tex_pdfximage:D
-      \bool_lazy_or:nnT
-        { \l__graphics_interpolate_bool }
-        { ! \tl_if_empty_p:N \l__graphics_decodearray_str }
+      \bool_lazy_any:nT
         {
+          { \l__graphics_interpolate_bool }
+          { ! \tl_if_empty_p:N \l__graphics_decodearray_str }
+          { ! \str_if_empty_p:N \l__graphics_pdf_str }
+        }
+        {
           attr ~
             {
               \tl_if_empty:NF \l__graphics_decodearray_str
@@ -560,6 +566,7 @@
                 { /Decode~[ \l__graphics_decodearray_str ] }
               \bool_if:NT \l__graphics_interpolate_bool
                 { /Interpolate~true }
+              \l__graphics_pdf_str
             }
         }
       \int_compare:nNnT \l__graphics_page_int > 0
@@ -576,7 +583,7 @@
 \cs_new_protected:Npn \__graphics_backend_include_jpg:n #1
   {
     \tex_pdfrefximage:D
-      \int_use:c { c__graphics_ #1 \l__graphics_graphics_attr_tl _int }
+      \int_use:c { c__graphics_ #1 \l__graphics_attr_tl _int }
   }
 \cs_new_eq:NN \__graphics_backend_include_jpeg:n \__graphics_backend_include_jpg:n
 \cs_new_eq:NN \__graphics_backend_include_pdf:n \__graphics_backend_include_jpg:n

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def	2023-04-19 20:13:27 UTC (rev 66896)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-pdftex.def}{2023-03-30}{}
+  {l3backend-pdftex.def}{2023-04-19}{}
   {L3 backend support: PDF output (pdfTeX)}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -492,7 +492,7 @@
     \cs_if_exist:NTF \hook_gput_code:nnn
       {
         \hook_gput_code:nnn
-          { file / l3graphics.sty / after }
+          { package / l3graphics / after }
           { backend }
           {#1}
       }
@@ -504,19 +504,20 @@
       \l_graphics_search_ext_seq
       { .pdf , .eps , .ps , .png , .jpg , .jpeg  }
   }
-\tl_new:N \l__graphics_graphics_attr_tl
+\tl_new:N \l__graphics_attr_tl
 \cs_new_protected:Npn \__graphics_backend_getbb_jpg:n #1
   {
     \int_zero:N \l__graphics_page_int
     \tl_clear:N \l__graphics_pagebox_tl
-    \tl_set:Nx \l__graphics_graphics_attr_tl
+    \tl_set:Nx \l__graphics_attr_tl
       {
         \tl_if_empty:NF \l__graphics_decodearray_str
           { :D \l__graphics_decodearray_str }
         \bool_if:NT \l__graphics_interpolate_bool
           { :I }
+        \str_if_empty:NF \l__graphics_pdf_str
+          { :X \l__graphics_pdf_str }
       }
-    \tl_clear:N \l__graphics_graphics_attr_tl
     \__graphics_backend_getbb_auxi:n {#1}
   }
 \cs_new_eq:NN \__graphics_backend_getbb_jpeg:n \__graphics_backend_getbb_jpg:n
@@ -525,17 +526,19 @@
   {
     \tl_clear:N \l__graphics_decodearray_str
     \bool_set_false:N \l__graphics_interpolate_bool
-    \tl_set:Nx \l__graphics_graphics_attr_tl
+    \tl_set:Nx \l__graphics_attr_tl
       {
         : \l__graphics_pagebox_tl
         \int_compare:nNnT \l__graphics_page_int > 1
           { :P \int_use:N \l__graphics_page_int }
+        \str_if_empty:NF \l__graphics_pdf_str
+          { :X \l__graphics_pdf_str }
       }
     \__graphics_backend_getbb_auxi:n {#1}
   }
 \cs_new_protected:Npn \__graphics_backend_getbb_auxi:n #1
   {
-    \__graphics_bb_restore:xF { #1 \l__graphics_graphics_attr_tl }
+    \__graphics_bb_restore:xF { #1 \l__graphics_attr_tl }
       { \__graphics_backend_getbb_auxii:n {#1} }
   }
 \cs_new_protected:Npn \__graphics_backend_getbb_auxii:n #1
@@ -542,17 +545,20 @@
   {
     \exp_args:Ne \__graphics_backend_getbb_auxiii:n
       { \__graphics_backend_dequote:w #1 " #1 " \s__graphics_stop }
-    \int_const:cn { c__graphics_ #1 \l__graphics_graphics_attr_tl _int }
+    \int_const:cn { c__graphics_ #1 \l__graphics_attr_tl _int }
       { \tex_the:D \tex_pdflastximage:D }
-    \__graphics_bb_save:x { #1 \l__graphics_graphics_attr_tl }
+    \__graphics_bb_save:x { #1 \l__graphics_attr_tl }
   }
 \cs_new_protected:Npn \__graphics_backend_getbb_auxiii:n #1
   {
     \tex_immediate:D \tex_pdfximage:D
-      \bool_lazy_or:nnT
-        { \l__graphics_interpolate_bool }
-        { ! \tl_if_empty_p:N \l__graphics_decodearray_str }
+      \bool_lazy_any:nT
         {
+          { \l__graphics_interpolate_bool }
+          { ! \tl_if_empty_p:N \l__graphics_decodearray_str }
+          { ! \str_if_empty_p:N \l__graphics_pdf_str }
+        }
+        {
           attr ~
             {
               \tl_if_empty:NF \l__graphics_decodearray_str
@@ -559,6 +565,7 @@
                 { /Decode~[ \l__graphics_decodearray_str ] }
               \bool_if:NT \l__graphics_interpolate_bool
                 { /Interpolate~true }
+              \l__graphics_pdf_str
             }
         }
       \int_compare:nNnT \l__graphics_page_int > 0
@@ -575,7 +582,7 @@
 \cs_new_protected:Npn \__graphics_backend_include_jpg:n #1
   {
     \tex_pdfrefximage:D
-      \int_use:c { c__graphics_ #1 \l__graphics_graphics_attr_tl _int }
+      \int_use:c { c__graphics_ #1 \l__graphics_attr_tl _int }
   }
 \cs_new_eq:NN \__graphics_backend_include_jpeg:n \__graphics_backend_include_jpg:n
 \cs_new_eq:NN \__graphics_backend_include_pdf:n \__graphics_backend_include_jpg:n

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def	2023-04-19 20:13:27 UTC (rev 66896)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-xetex.def}{2023-03-30}{}
+  {l3backend-xetex.def}{2023-04-19}{}
   {L3 backend support: XeTeX}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -488,7 +488,7 @@
     \cs_if_exist:NTF \hook_gput_code:nnn
       {
         \hook_gput_code:nnn
-          { file / l3graphics.sty / after }
+          { package / l3graphics / after }
           { backend }
           {#1}
       }
@@ -575,7 +575,7 @@
               \tl_if_empty:NF \l__graphics_decodearray_str
                 { /Decode~[ \l__graphics_decodearray_str ] }
               \bool_if:NT \l__graphics_interpolate_bool
-                { /Interpolate~true> }
+                { /Interpolate~true }
             >>
           }
       }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty	2023-04-19 20:13:27 UTC (rev 66896)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3benchmark.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3benchmark}{2023-03-30}{}
+\ProvidesExplPackage{l3benchmark}{2023-04-19}{}
   {L3 Experimental benchmarking}
 \fp_new:N \g_benchmark_duration_target_fp
 \fp_gset:Nn \g_benchmark_duration_target_fp { 1 }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty	2023-04-19 20:13:27 UTC (rev 66896)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3bitset.dtx
-\ProvidesExplPackage{l3bitset}{2023-03-30}{}
+\ProvidesExplPackage{l3bitset}{2023-04-19}{}
   {L3 Experimental bitset support}
 \cs_new_protected:Npn \bitset_new:N #1
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2023-04-19 20:13:27 UTC (rev 66896)
@@ -28,7 +28,7 @@
 %% 
 %% File: l3draw.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3draw}{2023-03-30}{}
+\ProvidesExplPackage{l3draw}{2023-04-19}{}
   {L3 Experimental core drawing support}
 \scan_new:N \s__draw_mark
 \scan_new:N \s__draw_stop
@@ -502,8 +502,10 @@
 \fp_const:cn { c__draw_path_arc_60_fp } { 4/3 * tand(15) }
 \cs_new_protected:Npn \draw_path_arc_axes:nnnn #1#2#3#4
   {
-    \draw_transform_triangle:nnn { 0cm , 0cm } {#3} {#4}
-    \draw_path_arc:nnn {#1} {#2} { 1pt }
+    \group_begin:
+      \draw_transform_triangle:nnn { 0cm , 0cm } {#3} {#4}
+      \draw_path_arc:nnn {#1} {#2} { 1pt }
+    \group_end:
   }
 \cs_new_protected:Npn \draw_path_ellipse:nnn #1#2#3
   {
@@ -1888,12 +1890,12 @@
     \__draw_point_process:nnn
       {
         \__draw_point_process:nn
-          { \__draw_tranform_triangle:nnnnnn }
+          { \__draw_transform_triangle:nnnnnn }
           {#1}
       }
       {#2} {#3}
   }
-\cs_new_protected:Npn \__draw_tranform_triangle:nnnnnn #1#2#3#4#5#6
+\cs_new_protected:Npn \__draw_transform_triangle:nnnnnn #1#2#3#4#5#6
   {
     \use:x
       {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty	2023-04-19 20:13:27 UTC (rev 66896)
@@ -19,8 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3graphics.dtx
-\RequirePackage{expl3}
-\ProvidesExplPackage{l3graphics}{2023-03-30}{}
+\ProvidesExplPackage{l3graphics}{2023-04-19}{}
   {L3 Experimental graphics inclusion support}
 \dim_new:N \l__graphics_internal_dim
 \ior_new:N \l__graphics_internal_ior
@@ -45,6 +44,8 @@
       crop ,
     page .int_set:N =
       \l__graphics_page_int ,
+    pdf-attr .str_set:N =
+      \l__graphics_pdf_str ,
     type . str_set:N =
       \l__graphics_type_str
   }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty	2023-04-19 20:13:27 UTC (rev 66896)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3opacity.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3opacity}{2023-03-30}{}
+\ProvidesExplPackage{l3opacity}{2023-04-19}{}
   {L3 Experimental opacity support}
 \cs_new_protected:Npn \opacity_select:n #1
   { \__opacity_select:nN {#1} \__opacity_backend_select:n }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2023-04-19 20:13:27 UTC (rev 66896)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3str-format.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3str-format}{2023-03-30}{}
+\ProvidesExplPackage{l3str-format}{2023-04-19}{}
   {L3 Experimental string formatting}
 \cs_generate_variant:Nn \use:nn { nf }
 \cs_generate_variant:Nn \use:nnn { fnf }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty	2023-04-19 20:13:27 UTC (rev 66896)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3sys-shell.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3sys-shell}{2023-03-30}{}
+\ProvidesExplPackage{l3sys-shell}{2023-04-19}{}
   {L3 Experimental system shell functions}
 \scan_new:N \s__sys_stop
 \quark_new:N \q__sys_nil

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty	2023-04-19 20:13:27 UTC (rev 66896)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: xcoffins.dtx
-\ProvidesExplPackage{xcoffins}{2023-03-30}{}
+\ProvidesExplPackage{xcoffins}{2023-04-19}{}
   {L3 Experimental design level coffins}
 \keys_define:nn { coffin }
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty	2023-04-19 20:13:27 UTC (rev 66896)
@@ -32,7 +32,7 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{l3galley}{2023-03-30}{}
+\ProvidesExplPackage{l3galley}{2023-04-19}{}
   {L3 Experimental galley code}
 \int_new:N \l__galley_tmp_int
 \seq_new:N \g__galley_tmpa_seq

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2023-04-19 20:13:27 UTC (rev 66896)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: xgalley.dtx
-\ProvidesExplPackage{xgalley}{2023-03-30}{}
+\ProvidesExplPackage{xgalley}{2023-04-19}{}
   {L3 Experimental galley}
 \RequirePackage{xtemplate,l3galley}
 \clist_new:N \l__galley_tmpa_clist

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2023-04-19 20:13:27 UTC (rev 66896)
@@ -71,7 +71,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-03-30}%
+\def\ExplFileDate{2023-04-19}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -28466,6 +28466,116 @@
           }
       }
   }
+\cs_new_protected:Npn \box_set_clipped:N #1
+  { \hbox_set:Nn #1 { \__box_backend_clip:N #1 } }
+\cs_generate_variant:Nn \box_set_clipped:N { c }
+\cs_new_protected:Npn \box_gset_clipped:N #1
+  { \hbox_gset:Nn #1 { \__box_backend_clip:N #1 } }
+\cs_generate_variant:Nn \box_gset_clipped:N { c }
+\cs_new_protected:Npn \box_set_trim:Nnnnn #1#2#3#4#5
+  { \__box_set_trim:NnnnnN #1 {#2} {#3} {#4} {#5} \box_set_eq:NN }
+\cs_generate_variant:Nn \box_set_trim:Nnnnn { c }
+\cs_new_protected:Npn \box_gset_trim:Nnnnn #1#2#3#4#5
+  { \__box_set_trim:NnnnnN #1 {#2} {#3} {#4} {#5} \box_gset_eq:NN }
+\cs_generate_variant:Nn \box_gset_trim:Nnnnn { c }
+\cs_new_protected:Npn \__box_set_trim:NnnnnN #1#2#3#4#5#6
+  {
+    \hbox_set:Nn \l__box_internal_box
+      {
+        \__kernel_kern:n { -#2 }
+        \box_use:N #1
+        \__kernel_kern:n { -#4 }
+      }
+    \dim_compare:nNnTF { \box_dp:N #1 } > {#3}
+      {
+        \hbox_set:Nn \l__box_internal_box
+          {
+            \box_move_down:nn \c_zero_dim
+              { \box_use_drop:N \l__box_internal_box }
+          }
+        \box_set_dp:Nn \l__box_internal_box { \box_dp:N #1 - (#3) }
+      }
+      {
+        \hbox_set:Nn \l__box_internal_box
+          {
+            \box_move_down:nn { (#3) - \box_dp:N #1 }
+              { \box_use_drop:N \l__box_internal_box }
+          }
+        \box_set_dp:Nn \l__box_internal_box \c_zero_dim
+      }
+    \dim_compare:nNnTF { \box_ht:N \l__box_internal_box } > {#5}
+      {
+        \hbox_set:Nn \l__box_internal_box
+          {
+            \box_move_up:nn \c_zero_dim
+              { \box_use_drop:N \l__box_internal_box }
+          }
+        \box_set_ht:Nn \l__box_internal_box
+          { \box_ht:N \l__box_internal_box - (#5) }
+      }
+      {
+        \hbox_set:Nn \l__box_internal_box
+          {
+            \box_move_up:nn { (#5) - \box_ht:N \l__box_internal_box }
+              { \box_use_drop:N \l__box_internal_box }
+          }
+        \box_set_ht:Nn \l__box_internal_box \c_zero_dim
+      }
+    #6 #1 \l__box_internal_box
+  }
+\cs_new_protected:Npn \box_set_viewport:Nnnnn #1#2#3#4#5
+  { \__box_set_viewport:NnnnnN #1 {#2} {#3} {#4} {#5} \box_set_eq:NN }
+\cs_generate_variant:Nn \box_set_viewport:Nnnnn { c }
+\cs_new_protected:Npn \box_gset_viewport:Nnnnn #1#2#3#4#5
+  { \__box_set_viewport:NnnnnN #1 {#2} {#3} {#4} {#5} \box_gset_eq:NN }
+\cs_generate_variant:Nn \box_gset_viewport:Nnnnn { c }
+\cs_new_protected:Npn \__box_set_viewport:NnnnnN #1#2#3#4#5#6
+  {
+    \hbox_set:Nn \l__box_internal_box
+      {
+        \__kernel_kern:n { -#2 }
+        \box_use:N #1
+        \__kernel_kern:n { #4 - \box_wd:N #1 }
+      }
+    \dim_compare:nNnTF {#3} < \c_zero_dim
+      {
+        \hbox_set:Nn \l__box_internal_box
+          {
+            \box_move_down:nn \c_zero_dim
+              { \box_use_drop:N \l__box_internal_box }
+          }
+        \box_set_dp:Nn \l__box_internal_box { - \__box_dim_eval:n {#3} }
+      }
+      {
+        \hbox_set:Nn \l__box_internal_box
+          { \box_move_down:nn {#3} { \box_use_drop:N \l__box_internal_box } }
+        \box_set_dp:Nn \l__box_internal_box \c_zero_dim
+      }
+    \dim_compare:nNnTF {#5} > \c_zero_dim
+      {
+        \hbox_set:Nn \l__box_internal_box
+          {
+            \box_move_up:nn \c_zero_dim
+              { \box_use_drop:N \l__box_internal_box }
+          }
+        \box_set_ht:Nn \l__box_internal_box
+          {
+            (#5)
+            \dim_compare:nNnT {#3} > \c_zero_dim
+              { - (#3) }
+          }
+      }
+      {
+        \hbox_set:Nn \l__box_internal_box
+          {
+            \box_move_up:nn { - \__box_dim_eval:n {#5} }
+              { \box_use_drop:N \l__box_internal_box }
+          }
+        \box_set_ht:Nn \l__box_internal_box \c_zero_dim
+      }
+    #6 #1 \l__box_internal_box
+  }
+
 %% File: l3color.dtx
 \cs_new_eq:NN \color_group_begin: \group_begin:
 \cs_new_eq:NN \color_group_end:   \group_end:
@@ -30316,7 +30426,7 @@
 \cs_new:Npn \pdf_version_major: { \__pdf_backend_version_major: }
 \cs_new:Npn \pdf_version_minor: { \__pdf_backend_version_minor: }
 \cs_new_protected:Npn \pdf_pagesize_gset:nn #1#2
-  { \__pdf_pagesize_gset:nn {#1} {#2} }
+  { \__pdf_backend_pagesize_gset:nn {#1} {#2} }
 \cs_new_protected:Npn \pdf_destination:nn #1#2
   { \__pdf_backend_destination:nn {#1} {#2} }
 \cs_new_protected:Npn \pdf_destination:nnnn #1#2#3#4
@@ -33215,7 +33325,7 @@
       { \__text_change_case_exclude:nnN {#1} {#2} }
       {
         \__text_codepoint_process:nN
-          { \use:c { __text_change_case_codepoint_ #1 :nnn } {#1} {#2} }
+          { \use:c { __text_change_case_custom_ #1 :nnn } {#1} {#2} }
       }
         #3
   }
@@ -33264,7 +33374,7 @@
   {
     \cs_if_exist:cTF { l__text_case_ \token_to_str:N #3 _tl }
       {
-        \exp_args:Nv \__text_change_case_replace:nnn
+        \__text_change_case_replace:vnn
           { l__text_case_ \token_to_str:N #3 _tl } {#1} {#2}
       }
       { \__text_change_case_switch:nnN {#1} {#2} #3 }
@@ -33271,6 +33381,7 @@
   }
 \cs_new:Npn \__text_change_case_replace:nnn #1#2#3
   { \__text_change_case_loop:nnw {#2} {#3} #1 }
+\cs_generate_variant:Nn \__text_change_case_replace:nnn { v }
 \cs_new:Npn \__text_change_case_switch:nnN #1#2#3
   {
     \cs_if_eq:NNTF #3 \text_case_switch:nnnn
@@ -33326,6 +33437,39 @@
           { \__text_change_case_loop:nnw {#3} {#4} }
       }
   }
+\cs_new:Npn \__text_change_case_custom_lower:nnn #1#2#3
+  {
+    \__text_change_case_custom:nnnnn {#1} {#2} {#3} {#1}
+      { \use:c { __text_change_case_codepoint_ #1 :nnn } {#1} {#2} {#3} }
+  }
+\cs_new_eq:NN \__text_change_case_custom_upper:nnn
+  \__text_change_case_custom_lower:nnn
+\cs_new:Npn \__text_change_case_custom_title:nnn #1#2#3
+  {
+    \__text_change_case_custom:nnnnn { title } {#2} {#3} {#1}
+      {
+        \__text_change_case_custom:nnnnn { upper } {#2} {#3} {#1}
+          { \use:c { __text_change_case_codepoint_ #1 :nnn } {#1} {#2} {#3} }
+      }
+  }
+\cs_new_eq:NN \__text_change_case_custom_titleonly:nnn
+  \__text_change_case_custom_title:nnn
+\cs_new:Npn \__text_change_case_custom:nnnnn #1#2#3#4#5
+  {
+    \tl_if_exist:cTF { l__text_ #1 case _ \tl_to_str:n {#3} _ #2 _tl }
+      {
+        \__text_change_case_replace:vnn
+          { l__text_ #1 case _ \tl_to_str:n {#3} _ #2 _tl } {#4} {#2}
+      }
+      {
+        \tl_if_exist:cTF { l__text_ #1 case _ \tl_to_str:n {#3} _tl }
+          {
+            \__text_change_case_replace:vnn
+              { l__text_ #1 case _ \tl_to_str:n {#3} _tl } {#4} {#2}
+          }
+          {#5}
+      }
+  }
 \cs_new:Npn \__text_change_case_codepoint_lower:nnn #1#2#3
   {
     \cs_if_exist_use:cF { __text_change_case_lower_ #2 :nnnn }
@@ -33499,6 +33643,38 @@
     \tl_clear_new:c { l__text_case_ \token_to_str:N #1 _tl }
     \tl_set:cn { l__text_case_ \token_to_str:N #1 _tl } {#2}
   }
+\cs_new_protected:Npn \text_declare_lowercase_mapping:nn #1#2
+  { \__text_declare_case_mapping:nnn { lower } {#1} {#2} }
+\cs_new_protected:Npn \text_declare_titlecase_mapping:nn #1#2
+  { \__text_declare_case_mapping:nnn { title } {#1} {#2} }
+\cs_new_protected:Npn \text_declare_uppercase_mapping:nn #1#2
+  { \__text_declare_case_mapping:nnn { upper } {#1} {#2} }
+\cs_new_protected:Npn \__text_declare_case_mapping:nnn #1#2#3
+  {
+    \exp_args:Ne \__text_declare_case_mapping_aux:nnn
+      { \codepoint_str_generate:n {#2} } {#1} {#3}
+  }
+\cs_new_protected:Npn \__text_declare_case_mapping_aux:nnn #1#2#3
+  {
+    \tl_clear_new:c { l__text_ #2 case _ #1 _tl }
+    \tl_set:cn { l__text_ #2 case _ #1 _ tl } {#3}
+  }
+\cs_new_protected:Npn \text_declare_lowercase_mapping:nnn #1#2#3
+  { \__text_declare_case_mapping:nnnn { lower } {#1} {#2} {#3} }
+\cs_new_protected:Npn \text_declare_titlecase_mapping:nnn #1#2#3
+  { \__text_declare_case_mapping:nnnn { title } {#1} {#2} {#3} }
+\cs_new_protected:Npn \text_declare_uppercase_mapping:nnn #1#2#3
+  { \__text_declare_case_mapping:nnnn { upper } {#1} {#2} {#3} }
+\cs_new_protected:Npn \__text_declare_case_mapping:nnnn #1#2#3#4
+  {
+    \exp_args:Ne \__text_declare_case_mapping_aux:nnnn
+      { \codepoint_str_generate:n {#2} } {#1} {#3} {#4}
+  }
+\cs_new_protected:Npn \__text_declare_case_mapping_aux:nnnn #1#2#3#4
+  {
+    \tl_clear_new:c { l__text_ #2 case _ #1 _ #3 _tl }
+    \tl_set:cn { l__text_ #2 case _ #1 _ #3 _ tl } {#4}
+  }
 \cs_new:Npn \text_case_switch:nnnn #1#2#3#4
   {
     \__text_case_switch_marker:
@@ -34440,6 +34616,12 @@
           }
       }
   }
+\bool_lazy_or:nnF
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+   \text_declare_uppercase_mapping:nn { "01F0 } { \v { J } }
+ }
 %% File: l3text-map.dtx
 \cs_new:Npn \text_map_function:nN #1#2
   { \exp_args:Ne \__text_map_function:nN { \text_expand:n {#1} } #2 }
@@ -35358,115 +35540,6 @@
     \q_recursion_stop
 \group_end:
 %% File: l3candidates.dtx
-\cs_new_protected:Npn \box_clip:N #1
-  { \hbox_set:Nn #1 { \__box_backend_clip:N #1 } }
-\cs_generate_variant:Nn \box_clip:N { c }
-\cs_new_protected:Npn \box_gclip:N #1
-  { \hbox_gset:Nn #1 { \__box_backend_clip:N #1 } }
-\cs_generate_variant:Nn \box_gclip:N { c }
-\cs_new_protected:Npn \box_set_trim:Nnnnn #1#2#3#4#5
-  { \__box_set_trim:NnnnnN #1 {#2} {#3} {#4} {#5} \box_set_eq:NN }
-\cs_generate_variant:Nn \box_set_trim:Nnnnn { c }
-\cs_new_protected:Npn \box_gset_trim:Nnnnn #1#2#3#4#5
-  { \__box_set_trim:NnnnnN #1 {#2} {#3} {#4} {#5} \box_gset_eq:NN }
-\cs_generate_variant:Nn \box_gset_trim:Nnnnn { c }
-\cs_new_protected:Npn \__box_set_trim:NnnnnN #1#2#3#4#5#6
-  {
-    \hbox_set:Nn \l__box_internal_box
-      {
-        \__kernel_kern:n { -#2 }
-        \box_use:N #1
-        \__kernel_kern:n { -#4 }
-      }
-    \dim_compare:nNnTF { \box_dp:N #1 } > {#3}
-      {
-        \hbox_set:Nn \l__box_internal_box
-          {
-            \box_move_down:nn \c_zero_dim
-              { \box_use_drop:N \l__box_internal_box }
-          }
-        \box_set_dp:Nn \l__box_internal_box { \box_dp:N #1 - (#3) }
-      }
-      {
-        \hbox_set:Nn \l__box_internal_box
-          {
-            \box_move_down:nn { (#3) - \box_dp:N #1 }
-              { \box_use_drop:N \l__box_internal_box }
-          }
-        \box_set_dp:Nn \l__box_internal_box \c_zero_dim
-      }
-    \dim_compare:nNnTF { \box_ht:N \l__box_internal_box } > {#5}
-      {
-        \hbox_set:Nn \l__box_internal_box
-          {
-            \box_move_up:nn \c_zero_dim
-              { \box_use_drop:N \l__box_internal_box }
-          }
-        \box_set_ht:Nn \l__box_internal_box
-          { \box_ht:N \l__box_internal_box - (#5) }
-      }
-      {
-        \hbox_set:Nn \l__box_internal_box
-          {
-            \box_move_up:nn { (#5) - \box_ht:N \l__box_internal_box }
-              { \box_use_drop:N \l__box_internal_box }
-          }
-        \box_set_ht:Nn \l__box_internal_box \c_zero_dim
-      }
-    #6 #1 \l__box_internal_box
-  }
-\cs_new_protected:Npn \box_set_viewport:Nnnnn #1#2#3#4#5
-  { \__box_set_viewport:NnnnnN #1 {#2} {#3} {#4} {#5} \box_set_eq:NN }
-\cs_generate_variant:Nn \box_set_viewport:Nnnnn { c }
-\cs_new_protected:Npn \box_gset_viewport:Nnnnn #1#2#3#4#5
-  { \__box_set_viewport:NnnnnN #1 {#2} {#3} {#4} {#5} \box_gset_eq:NN }
-\cs_generate_variant:Nn \box_gset_viewport:Nnnnn { c }
-\cs_new_protected:Npn \__box_set_viewport:NnnnnN #1#2#3#4#5#6
-  {
-    \hbox_set:Nn \l__box_internal_box
-      {
-        \__kernel_kern:n { -#2 }
-        \box_use:N #1
-        \__kernel_kern:n { #4 - \box_wd:N #1 }
-      }
-    \dim_compare:nNnTF {#3} < \c_zero_dim
-      {
-        \hbox_set:Nn \l__box_internal_box
-          {
-            \box_move_down:nn \c_zero_dim
-              { \box_use_drop:N \l__box_internal_box }
-          }
-        \box_set_dp:Nn \l__box_internal_box { - \__box_dim_eval:n {#3} }
-      }
-      {
-        \hbox_set:Nn \l__box_internal_box
-          { \box_move_down:nn {#3} { \box_use_drop:N \l__box_internal_box } }
-        \box_set_dp:Nn \l__box_internal_box \c_zero_dim
-      }
-    \dim_compare:nNnTF {#5} > \c_zero_dim
-      {
-        \hbox_set:Nn \l__box_internal_box
-          {
-            \box_move_up:nn \c_zero_dim
-              { \box_use_drop:N \l__box_internal_box }
-          }
-        \box_set_ht:Nn \l__box_internal_box
-          {
-            (#5)
-            \dim_compare:nNnT {#3} > \c_zero_dim
-              { - (#3) }
-          }
-      }
-      {
-        \hbox_set:Nn \l__box_internal_box
-          {
-            \box_move_up:nn { - \__box_dim_eval:n {#5} }
-              { \box_use_drop:N \l__box_internal_box }
-          }
-        \box_set_ht:Nn \l__box_internal_box \c_zero_dim
-      }
-    #6 #1 \l__box_internal_box
-  }
 \cs_new:Npn \flag_raise_if_clear:n #1
   {
     \if_cs_exist:w flag~#1~0 \cs_end:

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2023-04-19 20:13:27 UTC (rev 66896)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-03-30}%
+\def\ExplFileDate{2023-04-19}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2023-04-19 20:13:27 UTC (rev 66896)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-03-30}%
+\def\ExplFileDate{2023-04-19}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2023-04-19 20:11:39 UTC (rev 66895)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2023-04-19 20:13:27 UTC (rev 66896)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-03-30}%
+\def\ExplFileDate{2023-04-19}%
 \let\ExplLoaderFileDate\ExplFileDate
 \ProvidesPackage{expl3}
   [%



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