[latex3-commits] [l3svn] 02/02: Add basic dvisvgm support
noreply at latex-project.org
noreply at latex-project.org
Tue May 10 09:18:27 CEST 2016
This is an automated email from the git hooks/post-receive script.
joseph pushed a commit to branch master
in repository l3svn.
commit 290e62b8bf38faa86f1116bc33cf07c5092baccd
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date: Tue May 10 08:18:17 2016 +0100
Add basic dvisvgm support
At present this covers color/rotation/scaling but not clipping:
the latter is trickier.
---
l3kernel/build.lua | 2 +-
l3kernel/expl3.dtx | 18 +
l3kernel/l3.ins | 1 +
l3kernel/l3drivers.dtx | 97 +++++-
l3kernel/l3format.ins | 2 +
l3kernel/testfiles/d3dvisvgm.lvt | 23 ++
l3kernel/testfiles/d3dvisvgm.tlg | 544 ++++++++++++++++++++++++++++++
l3kernel/testfiles/d3dvisvgm.xetex.tlg | 570 ++++++++++++++++++++++++++++++++
8 files changed, 1248 insertions(+), 9 deletions(-)
diff --git a/l3kernel/build.lua b/l3kernel/build.lua
index 9d186d2..e574862 100644
--- a/l3kernel/build.lua
+++ b/l3kernel/build.lua
@@ -25,7 +25,7 @@ cmdchkfiles = -- Need to miss a few .dtx files
docfiles = {"source3body.tex"}
installfiles =
{
- "l3dvipdfmx.def", "l3dvips.def", "l3pdfmode.def",
+ "l3dvipdfmx.def", "l3dvips.def", "l3dvisvgm.def", "l3pdfmode.def",
"l3xdvipdfmx.def",
"expl3.lua",
"*.cls", "*.sty", "*.tex"
diff --git a/l3kernel/expl3.dtx b/l3kernel/expl3.dtx
index 27394c1..1d97123 100644
--- a/l3kernel/expl3.dtx
+++ b/l3kernel/expl3.dtx
@@ -1364,6 +1364,24 @@
}
}
},
+ driver / dvisvgm .code:n =
+ {
+ \tl_set:Nn \l__expl_driver_tl { dvisvgm }
+ \sys_if_engine_xetex:TF
+ {
+ \__msg_kernel_error:nnnn { expl } { wrong-driver }
+ { dvips } { xdvipdfmx }
+ \tl_set:Nn \l__expl_driver_tl { xdvipdfmx }
+ }
+ {
+ \sys_if_output_pdf:T
+ {
+ \__msg_kernel_error:nnnn { expl } { wrong-driver }
+ { dvips } { pdfmode }
+ \tl_set:Nn \l__expl_driver_tl { pdfmode }
+ }
+ }
+ },
driver / latex2e .code:n =
{ \tl_set:Nn \l__expl_driver_tl { latex2e } },
driver / pdfmode .code:n =
diff --git a/l3kernel/l3.ins b/l3kernel/l3.ins
index cc4108b..c1d0419 100644
--- a/l3kernel/l3.ins
+++ b/l3kernel/l3.ins
@@ -90,6 +90,7 @@ Do not distribute a modified version of this file.
\generate{\file{l3dvipdfmx.def} {\from{l3drivers.dtx} {package,dvipdfmx} }}
\generate{\file{l3dvips.def} {\from{l3drivers.dtx} {package,dvips} }}
+\generate{\file{l3dvisvgm.def} {\from{l3drivers.dtx} {package,dvisvgm} }}
\generate{\file{l3pdfmode.def} {\from{l3drivers.dtx} {package,pdfmode} }}
\generate{\file{l3xdvipdfmx.def} {\from{l3drivers.dtx} {package,xdvipdfmx}}}
diff --git a/l3kernel/l3drivers.dtx b/l3kernel/l3drivers.dtx
index 9482ba5..1516bde 100644
--- a/l3kernel/l3drivers.dtx
+++ b/l3kernel/l3drivers.dtx
@@ -175,6 +175,10 @@
{l3dvips.def}{\ExplFileDate}{\ExplFileVersion}
{L3 Experimental driver: dvips}
%</dvips>
+%<*dvisvgm>
+ {l3dvisvgm.def}{\ExplFileDate}{\ExplFileVersion}
+ {L3 Experimental driver: dvisvgm}
+%</dvisvgm>
%<*pdfmode>
{l3pdfmode.def}{\ExplFileDate}{\ExplFileVersion}
{L3 Experimental driver: PDF mode}
@@ -230,7 +234,7 @@
% \subsection{Driver utility functions}
%
% \begin{macro}{\@@_state_save:, \@@_state_restore:}
-% All of the drivers have a stack for saving the graphic state. These
+% Almost all of the drivers have a stack for saving the graphic state. These
% have slightly different interfaces. For both \texttt{dvips} and
% \texttt{(x)dvipdfmx} this is done using an appropriate special. Note
% that here and later, the \texttt{dvipdfmx} documentation does not cover
@@ -239,7 +243,9 @@
% in direct PDF output mode there is a dedicated primitive. \LuaTeX{} is
% almost the same but with newer versions there is a compatibly step
% \begin{macrocode}
+%<*dvips|dvipdfmx|pdfmode|xdvipdfmx>
\cs_new_protected_nopar:Npx \@@_state_save:
+%</dvips|dvipdfmx|pdfmode|xdvipdfmx>
%<*dvips>
{ \tex_special:D { ps:gsave } }
%</dvips>
@@ -253,7 +259,9 @@
{ \pdftex_pdfsave:D }
}
%</pdfmode>
+%<*dvips|dvipdfmx|pdfmode|xdvipdfmx>
\cs_new_protected_nopar:Npx \@@_state_restore:
+%</dvips|dvipdfmx|pdfmode|xdvipdfmx>
%<*dvips>
{ \tex_special:D { ps:grestore } }
%</dvips>
@@ -278,7 +286,9 @@
% be driver-specific. Note that these functions set the transformation matrix
% to the current position.
% \begin{macrocode}
+%<*dvips|dvipdfmx|pdfmode|xdvipdfmx>
\cs_new_protected:Npx \@@_literal:n #1
+%</dvips|dvipdfmx|pdfmode|xdvipdfmx>
%<*dvipdfmx|xdvipdfmx>
{ \tex_special:D { pdf:literal~ #1 } }
%</dvipdfmx|xdvipdfmx>
@@ -312,6 +322,27 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[int]{\@@_transform:n}
+% \begin{macro}[int]{\@@_transform_end:}
+% The \texttt{dvisvgm} driver needs to generate \textsc{svg} code, which
+% works somewhat differently from the \textsc{EPS} heritage visible in all
+% of the other drivers. In particular, it doesn't use a save/restore stack
+% for the graphics state so instead needs functions to start/end a
+% transformation. (At some future stage this might be generalised using a
+% \cs{@@_literal_direct:n} or similar function as the approach here also does
+% not expect the graphic state to be aligned \enquote{here}.)
+% \begin{macrocode}
+%<*dvisvgm>
+\cs_new_protected:Npn \@@_transform:n #1
+ { \tex_special:D { dvisvgm:raw~<g~transform=" #1 "> } }
+\cs_new_protected_nopar:Npn \@@_transform_end:
+ { \tex_special:D { dvisvgm:raw~</g> } }
+%</dvisvgm>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+
+%
% \begin{macro}[int, EXP]{\@@_absolute_lengths:n}
% The \texttt{dvips} driver scales all absolute dimensions based
% on the output resolution selected and any \TeX{} magnification. Thus
@@ -338,8 +369,9 @@
% With \texttt{(x)dvipdfmx} the matrix also has to include a translation
% part: that is always zero and so is built in here.
% \begin{macrocode}
-%<*!dvips>
+%<*dvipdfmx|pdfmode|xdvipdfmx>
\cs_new_protected:Npx \@@_matrix:n #1
+%</dvipdfmx|pdfmode|xdvipdfmx>
%<*pdfmode>
{
\cs_if_exist:NTF \luatex_pdfextension:D
@@ -351,7 +383,6 @@
%<*dvipdfmx|xdvipdfmx>
{ \@@_literal:n { #1 \c_space_tl 0~0~cm } }
%</dvipdfmx|xdvipdfmx>
-%</!dvips>
% \end{macrocode}
% \end{macro}
%
@@ -369,7 +400,9 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_box_use_clip:N #1
{
+%<*dvips|dvipdfmx|pdfmode|xdvipdfmx>
\@@_state_save:
+%</dvips|dvipdfmx|pdfmode|xdvipdfmx>
%<*dvips>
\@@_literal:n
{
@@ -398,7 +431,9 @@
% and then insert the necessary width.
% \begin{macrocode}
\hbox_overlap_right:n { \box_use:N #1 }
+%<*dvips|dvipdfmx|pdfmode|xdvipdfmx>
\@@_state_restore:
+%</dvips|dvipdfmx|pdfmode|xdvipdfmx>
\skip_horizontal:n { \box_wd:N #1 }
}
% \end{macrocode}
@@ -424,7 +459,9 @@
% \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_box_rotate_begin:
{
+%<*dvips|dvipdfmx|pdfmode|xdvipdfmx>
\@@_state_save:
+%</dvips|dvipdfmx|pdfmode|xdvipdfmx>
%<*dvipdfmx|pdfmode|xdvipdfmx>
\box_set_wd:Nn \l__box_internal_box \c_zero_dim
\fp_set:Nn \l__box_cos_fp { round ( \l__box_cos_fp , 5 ) }
@@ -445,8 +482,10 @@
\fp_use:N \l__box_cos_fp
}
%</dvipdfmx|pdfmode|xdvipdfmx>
-%<*dvips>
+%<*dvips|dvisvgm>
\fp_set:Nn \l__box_angle_fp { round ( \l__box_angle_fp , 5 ) }
+%</dvips|dvisvgm>
+%<*dvips>
\@@_literal:n
{
\fp_compare:nNnTF \l__box_angle_fp = \c_zero_fp
@@ -456,11 +495,28 @@
rotate
}
%</dvips>
+% \end{macrocode}
+% For \texttt{dvisvgm} the center of rotation can be set to the current
+% point using the |{?x}| and |{?y}| commands as the optional arguments of
+% the low-level operation.
+% \begin{macrocode}
+%<*dvisvgm>
+ \@@_transform:n
+ {
+ rotate
+ ( \fp_eval:n { -\l__box_angle_fp } , ~ { ?x } , ~ { ?y } )
+ }
+%</dvisvgm>
}
% \end{macrocode}
% The end of a rotation means tidying up the output grouping.
% \begin{macrocode}
+%<*dvips|dvipdfmx|pdfmode|xdvipdfmx>
\cs_new_eq:NN \@@_box_rotate_end: \@@_state_restore:
+%</dvips|dvipdfmx|pdfmode|xdvipdfmx>
+%<*dvisvgm>
+\cs_new_eq:NN \@@_box_rotate_end: \@@_transform_end:
+%</dvisvgm>
% \end{macrocode}
% \end{macro}
%
@@ -470,7 +526,9 @@
% \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_box_scale_begin:
{
+%<*dvips|dvipdfmx|pdfmode|xdvipdfmx>
\@@_state_save:
+%</dvips|dvipdfmx|pdfmode|xdvipdfmx>
\fp_set:Nn \l__box_scale_x_fp { round ( \l__box_scale_x_fp , 5 ) }
\fp_set:Nn \l__box_scale_y_fp { round ( \l__box_scale_y_fp , 5 ) }
%<*dvips>
@@ -489,8 +547,31 @@
\fp_use:N \l__box_scale_y_fp
}
%</dvipdfmx|pdfmode|xdvipdfmx>
+% \end{macrocode}
+% For \texttt{dvisvgm}, in contrast to rotation there's no convenient
+% shortcut to get the current position in the right place. We therefore have
+% to manipulate the current point such that everything lines up.
+% \begin{macrocode}
+%<*dvisvgm>
+ \@@_transform:n
+ {
+ translate ( { ?x } , { ?y } )
+ scale
+ (
+ \fp_eval:n { -\l__box_scale_x_fp } ,
+ \fp_eval:n { -\l__box_scale_y_fp }
+ )
+ translate ( { ?x } , { ?y } )
+ scale ( -1 )
+ }
+%</dvisvgm>
}
+%<*dvips|dvipdfmx|pdfmode|xdvipdfmx>
\cs_new_eq:NN \@@_box_scale_end: \@@_state_restore:
+%</dvips|dvipdfmx|pdfmode|xdvipdfmx>
+%<*dvisvgm>
+\cs_new_eq:NN \@@_box_scale_end: \@@_transform_end:
+%</dvisvgm>
% \end{macrocode}
% \end{macro}
%
@@ -536,12 +617,12 @@
% the current group.
% \begin{macrocode}
\cs_new_protected_nopar:Npx \@@_color_ensure_current:
-%<*dvipdfmx|dvips|xdvipdfmx>
+%<*dvipdfmx|dvips|dvisvgm|xdvipdfmx>
{
\tex_special:D { color~push~\exp_not:N \l_@@_current_color_tl }
\group_insert_after:N \exp_not:N \@@_color_reset:
}
-%</dvipdfmx|dvips|xdvipdfmx>
+%</dvipdfmx|dvips|dvisvgm|xdvipdfmx>
%<*pdfmode>
{
\cs_if_exist:NTF \luatex_pdfextension:D
@@ -553,9 +634,9 @@
}
%</pdfmode>
\cs_new_protected_nopar:Npx \@@_color_reset:
-%<*dvipdfmx|dvips|xdvipdfmx>
+%<*dvipdfmx|dvips|dvisvgm|xdvipdfmx>
{ \tex_special:D { color~pop } }
-%</dvipdfmx|dvips|xdvipdfmx>
+%</dvipdfmx|dvips|dvisvgm|xdvipdfmx>
%<*pdfmode>
{
\cs_if_exist:NTF \luatex_pdfextension:D
diff --git a/l3kernel/l3format.ins b/l3kernel/l3format.ins
index 1dabe77..30bfd60 100644
--- a/l3kernel/l3format.ins
+++ b/l3kernel/l3format.ins
@@ -84,7 +84,9 @@ Do not distribute a modified version of this file.
}
}
+\generate{\file{l3dvipdfmx.ltx} {\from{l3drivers.dtx}{initex,dvipdfmx} }}
\generate{\file{l3dvips.ltx} {\from{l3drivers.dtx}{initex,dvips} }}
+\generate{\file{l3dvisvgm.ltx} {\from{l3drivers.dtx}{initex,dvisvgm} }}
\generate{\file{l3pdfmode.ltx} {\from{l3drivers.dtx}{initex,pdfmode} }}
\generate{\file{l3xdvipdfmx.ltx}{\from{l3drivers.dtx}{initex,xdvipdfmx}}}
diff --git a/l3kernel/testfiles/d3dvisvgm.lvt b/l3kernel/testfiles/d3dvisvgm.lvt
new file mode 100644
index 0000000..e7e88ce
--- /dev/null
+++ b/l3kernel/testfiles/d3dvisvgm.lvt
@@ -0,0 +1,23 @@
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdfoutput\endcsname\relax
+\else
+ \csname pdfoutput\endcsname=0 %
+\fi
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname outputmode\endcsname\relax
+\else
+ \csname outputmode\endcsname=0 %
+\fi
+
+% (u)pLaTeX allocates additional registers: for this test, simply ignore them!
+\ifdefined\kanjiskip
+ \advance\count14 by -15
+\fi
+
+\RequirePackage[check-declarations,log-functions,driver=dvisvgm]{expl3}
+
+\ifdefined\kanjiskip
+ \advance\count14 by 15
+\fi
+
+\input{driver.tex}
diff --git a/l3kernel/testfiles/d3dvisvgm.tlg b/l3kernel/testfiles/d3dvisvgm.tlg
new file mode 100644
index 0000000..5687d79
--- /dev/null
+++ b/l3kernel/testfiles/d3dvisvgm.tlg
@@ -0,0 +1,544 @@
+This is a generated file for the LaTeX (2e + expl3) validation system.
+Don't change this file in any respect.
+Author: Joseph Wright
+============================================================
+TEST 1: Clip box
+============================================================
+> \box27=
+\hbox(6.94444+1.0)x86.45851
+.\hbox(6.94444+1.0)x0.0, glue set - 86.45851fil
+..\hbox(6.94444+1.0)x86.45851
+...\OT1/cmr/m/n/10 G
+...\OT1/cmr/m/n/10 o
+...\OT1/cmr/m/n/10 i
+...\OT1/cmr/m/n/10 n
+...\OT1/cmr/m/n/10 g
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 u
+...\OT1/cmr/m/n/10 p
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 a
+...\OT1/cmr/m/n/10 n
+...\OT1/cmr/m/n/10 d
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 d
+...\OT1/cmr/m/n/10 o
+...\kern-0.27779
+...\OT1/cmr/m/n/10 w
+...\OT1/cmr/m/n/10 n
+..\glue 0.0 plus 1.0fil minus 1.0fil
+.\glue 86.45851
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(6.94444+0.0)x86.45851
+.\hbox(6.94444+0.0)x0.0, glue set - 86.45851fil
+..\hbox(6.94444+0.0)x86.45851
+...\OT1/cmr/m/n/10 G
+...\OT1/cmr/m/n/10 o
+...\OT1/cmr/m/n/10 i
+...\OT1/cmr/m/n/10 n
+...\OT1/cmr/m/n/10 g
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 u
+...\OT1/cmr/m/n/10 p
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 a
+...\OT1/cmr/m/n/10 n
+...\OT1/cmr/m/n/10 d
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 d
+...\OT1/cmr/m/n/10 o
+...\kern-0.27779
+...\OT1/cmr/m/n/10 w
+...\OT1/cmr/m/n/10 n
+..\glue 0.0 plus 1.0fil minus 1.0fil
+.\glue 86.45851
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(6.94444+1.0)x86.45851
+.\hbox(6.94444+1.0)x0.0, glue set - 86.45851fil
+..\hbox(6.94444+1.0)x86.45851
+...\OT1/cmr/m/n/10 G
+...\OT1/cmr/m/n/10 o
+...\OT1/cmr/m/n/10 i
+...\OT1/cmr/m/n/10 n
+...\OT1/cmr/m/n/10 g
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 u
+...\OT1/cmr/m/n/10 p
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 a
+...\OT1/cmr/m/n/10 n
+...\OT1/cmr/m/n/10 d
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 d
+...\OT1/cmr/m/n/10 o
+...\kern-0.27779
+...\OT1/cmr/m/n/10 w
+...\OT1/cmr/m/n/10 n
+..\glue 0.0 plus 1.0fil minus 1.0fil
+.\glue 86.45851
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(6.94444+1.94444)x20.0
+.\hbox(6.94444+1.94444)x0.0, glue set - 20.0fil
+..\hbox(6.94444+1.94444)x20.0
+...\OT1/cmr/m/n/10 G
+...\OT1/cmr/m/n/10 o
+...\OT1/cmr/m/n/10 i
+...\OT1/cmr/m/n/10 n
+...\OT1/cmr/m/n/10 g
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 u
+...\OT1/cmr/m/n/10 p
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 a
+...\OT1/cmr/m/n/10 n
+...\OT1/cmr/m/n/10 d
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 d
+...\OT1/cmr/m/n/10 o
+...\kern-0.27779
+...\OT1/cmr/m/n/10 w
+...\OT1/cmr/m/n/10 n
+..\glue 0.0 plus 1.0fil minus 1.0fil
+.\glue 20.0
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+============================================================
+============================================================
+TEST 2: Rotate box
+============================================================
+> \box27=
+\hbox(6.94444+0.0)x50.02786
+.\OT1/cmr/m/n/10 H
+.\OT1/cmr/m/n/10 e
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 o
+.\glue 3.33333 plus 1.66666 minus 1.11111
+.\OT1/cmr/m/n/10 w
+.\kern-0.27779
+.\OT1/cmr/m/n/10 o
+.\OT1/cmr/m/n/10 r
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 d
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(6.94444+0.0)x50.02786
+.\hbox(6.94444+0.0)x50.02786
+..\kern 0.0
+..\hbox(6.94444+0.0)x50.02786
+...\special{dvisvgm:raw <g transform="rotate(-0, {?x}, {?y})">}
+...\hbox(6.94444+0.0)x50.02786
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+...\special{dvisvgm:raw </g>}
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(31.028+0.0)x46.79762
+.\hbox(31.028+0.0)x46.79762
+..\kern 3.47223
+..\hbox(6.94444+0.0)x50.02786
+...\special{dvisvgm:raw <g transform="rotate(-30, {?x}, {?y})">}
+...\hbox(6.94444+0.0)x50.02786
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+...\special{dvisvgm:raw </g>}
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(40.2855+0.0)x40.2855
+.\hbox(40.2855+0.0)x40.2855
+..\kern 4.91046
+..\hbox(6.94444+0.0)x50.02786
+...\special{dvisvgm:raw <g transform="rotate(-45, {?x}, {?y})">}
+...\hbox(6.94444+0.0)x50.02786
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+...\special{dvisvgm:raw </g>}
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(35.37505+4.91046)x40.2855
+.\hbox(35.37505+4.91046)x40.2855
+..\kern 40.2855
+..\hbox(6.94444+0.0)x50.02786
+...\special{dvisvgm:raw <g transform="rotate(-135, {?x}, {?y})">}
+...\hbox(6.94444+0.0)x50.02786
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+...\special{dvisvgm:raw </g>}
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(0.0+40.2855)x40.2855
+.\hbox(0.0+40.2855)x40.2855
+..\kern 35.37505
+..\hbox(6.94444+0.0)x50.02786
+...\special{dvisvgm:raw <g transform="rotate(-225, {?x}, {?y})">}
+...\hbox(6.94444+0.0)x50.02786
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+...\special{dvisvgm:raw </g>}
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(4.91046+35.37505)x40.2855
+.\hbox(4.91046+35.37505)x40.2855
+..\kern 0.0
+..\hbox(6.94444+0.0)x50.02786
+...\special{dvisvgm:raw <g transform="rotate(-315, {?x}, {?y})">}
+...\hbox(6.94444+0.0)x50.02786
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+...\special{dvisvgm:raw </g>}
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(56.9723+0.0)x56.97232
+.\hbox(56.9723+0.0)x56.97232
+..\kern 28.48616
+..\hbox(40.2855+0.0)x40.2855
+...\special{dvisvgm:raw <g transform="rotate(-45, {?x}, {?y})">}
+...\hbox(40.2855+0.0)x40.2855
+....\hbox(40.2855+0.0)x40.2855
+.....\hbox(40.2855+0.0)x40.2855
+......\kern 4.91046
+......\hbox(6.94444+0.0)x50.02786
+.......\special{dvisvgm:raw <g transform="rotate(-45, {?x}, {?y})">}
+.......\hbox(6.94444+0.0)x50.02786
+........\hbox(6.94444+0.0)x50.02786
+.........\OT1/cmr/m/n/10 H
+.........\OT1/cmr/m/n/10 e
+.........\OT1/cmr/m/n/10 l
+.........\OT1/cmr/m/n/10 l
+.........\OT1/cmr/m/n/10 o
+.........\glue 3.33333 plus 1.66666 minus 1.11111
+.........\OT1/cmr/m/n/10 w
+.........\kern-0.27779
+.........\OT1/cmr/m/n/10 o
+.........\OT1/cmr/m/n/10 r
+.........\OT1/cmr/m/n/10 l
+.........\OT1/cmr/m/n/10 d
+.......\special{dvisvgm:raw </g>}
+...\special{dvisvgm:raw </g>}
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+============================================================
+============================================================
+TEST 3: Scale box
+============================================================
+> \box27=
+\hbox(6.94444+0.0)x50.02786
+.\OT1/cmr/m/n/10 H
+.\OT1/cmr/m/n/10 e
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 o
+.\glue 3.33333 plus 1.66666 minus 1.11111
+.\OT1/cmr/m/n/10 w
+.\kern-0.27779
+.\OT1/cmr/m/n/10 o
+.\OT1/cmr/m/n/10 r
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 d
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(6.94444+0.0)x50.02786
+.\hbox(6.94444+0.0)x50.02786
+..\kern 0.0
+..\hbox(6.94444+0.0)x50.02786
+...\special{dvisvgm:raw <g transform="translate({?x},{?y})scale(-1,-1)translate({\ETC.}
+...\hbox(6.94444+0.0)x0.0, glue set - 50.02786fil
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+....\glue 0.0 plus 1.0fil minus 1.0fil
+...\special{dvisvgm:raw </g>}
+..\glue 0.0 plus 1.0fil minus 1.0fil
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(6.94444+0.0)x125.06966
+.\hbox(6.94444+0.0)x125.06966
+..\kern 0.0
+..\hbox(6.94444+0.0)x125.06966
+...\special{dvisvgm:raw <g transform="translate({?x},{?y})scale(-2.5,-1)translate\ETC.}
+...\hbox(6.94444+0.0)x0.0, glue set - 50.02786fil
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+....\glue 0.0 plus 1.0fil minus 1.0fil
+...\special{dvisvgm:raw </g>}
+..\glue 0.0 plus 1.0fil minus 1.0fil
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(2.31477+0.0)x50.02786
+.\hbox(2.31477+0.0)x50.02786
+..\kern 0.0
+..\hbox(2.31477+0.0)x50.02786
+...\special{dvisvgm:raw <g transform="translate({?x},{?y})scale(-1,-0.33333)trans\ETC.}
+...\hbox(6.94444+0.0)x0.0, glue set - 50.02786fil
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+....\glue 0.0 plus 1.0fil minus 1.0fil
+...\special{dvisvgm:raw </g>}
+..\glue 0.0 plus 1.0fil minus 1.0fil
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(6.94444+1.94444)x103.61133
+.\hbox(6.94444+1.94444)x103.61133
+..\kern 0.0
+..\hbox(6.94444+1.94444)x103.61133
+...\special{dvisvgm:raw <g transform="translate({?x},{?y})scale(-1,-1)translate({\ETC.}
+...\hbox(6.94444+1.94444)x0.0, glue set - 103.61133fil
+....\hbox(6.94444+1.94444)x103.61133
+.....\OT1/cmr/m/n/10 T
+.....\kern-0.83334
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 x
+.....\OT1/cmr/m/n/10 t
+.....\OT1/cmr/m/n/10 g
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 i
+.....\OT1/cmr/m/n/10 n
+.....\OT1/cmr/m/n/10 g
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 u
+.....\OT1/cmr/m/n/10 p
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 a
+.....\OT1/cmr/m/n/10 n
+.....\OT1/cmr/m/n/10 d
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 d
+.....\OT1/cmr/m/n/10 o
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 w
+.....\OT1/cmr/m/n/10 n
+....\glue 0.0 plus 1.0fil minus 1.0fil
+...\special{dvisvgm:raw </g>}
+..\glue 0.0 plus 1.0fil minus 1.0fil
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(20.83333+5.83333)x310.83398
+.\hbox(20.83333+5.83333)x310.83398
+..\kern 0.0
+..\hbox(20.83333+5.83333)x310.83398
+...\special{dvisvgm:raw <g transform="translate({?x},{?y})scale(-3,-3)translate({\ETC.}
+...\hbox(6.94444+1.94444)x0.0, glue set - 103.61133fil
+....\hbox(6.94444+1.94444)x103.61133
+.....\OT1/cmr/m/n/10 T
+.....\kern-0.83334
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 x
+.....\OT1/cmr/m/n/10 t
+.....\OT1/cmr/m/n/10 g
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 i
+.....\OT1/cmr/m/n/10 n
+.....\OT1/cmr/m/n/10 g
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 u
+.....\OT1/cmr/m/n/10 p
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 a
+.....\OT1/cmr/m/n/10 n
+.....\OT1/cmr/m/n/10 d
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 d
+.....\OT1/cmr/m/n/10 o
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 w
+.....\OT1/cmr/m/n/10 n
+....\glue 0.0 plus 1.0fil minus 1.0fil
+...\special{dvisvgm:raw </g>}
+..\glue 0.0 plus 1.0fil minus 1.0fil
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(5.83333+20.83333)x310.83398
+.\hbox(5.83333+20.83333)x310.83398
+..\kern 310.83398
+..\hbox(5.83333+20.83333)x0.0
+...\special{dvisvgm:raw <g transform="translate({?x},{?y})scale(3,3)translate({?x\ETC.}
+...\hbox(6.94444+1.94444)x0.0, glue set - 103.61133fil
+....\hbox(6.94444+1.94444)x103.61133
+.....\OT1/cmr/m/n/10 T
+.....\kern-0.83334
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 x
+.....\OT1/cmr/m/n/10 t
+.....\OT1/cmr/m/n/10 g
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 i
+.....\OT1/cmr/m/n/10 n
+.....\OT1/cmr/m/n/10 g
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 u
+.....\OT1/cmr/m/n/10 p
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 a
+.....\OT1/cmr/m/n/10 n
+.....\OT1/cmr/m/n/10 d
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 d
+.....\OT1/cmr/m/n/10 o
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 w
+.....\OT1/cmr/m/n/10 n
+....\glue 0.0 plus 1.0fil minus 1.0fil
+...\special{dvisvgm:raw </g>}
+..\glue 0.0 plus 1.0fil minus 1.0fil
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+============================================================
+============================================================
+TEST 4: Color
+============================================================
+> \box71=
+\hbox(6.94444+0.0)x50.02786
+.\special{color push }
+.\OT1/cmr/m/n/10 H
+.\OT1/cmr/m/n/10 e
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 o
+.\glue 3.33333 plus 1.66666 minus 1.11111
+.\OT1/cmr/m/n/10 w
+.\kern-0.27779
+.\OT1/cmr/m/n/10 o
+.\OT1/cmr/m/n/10 r
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 d
+.\special{color pop}
+! OK.
+<argument> \l_tmpa_coffin
+l. ... }
+============================================================
diff --git a/l3kernel/testfiles/d3dvisvgm.xetex.tlg b/l3kernel/testfiles/d3dvisvgm.xetex.tlg
new file mode 100644
index 0000000..7422869
--- /dev/null
+++ b/l3kernel/testfiles/d3dvisvgm.xetex.tlg
@@ -0,0 +1,570 @@
+This is a generated file for the LaTeX (2e + expl3) validation system.
+Don't change this file in any respect.
+Author: Joseph Wright
+============================================================
+TEST 1: Clip box
+============================================================
+> \box27=
+\hbox(6.94444+1.0)x86.45851
+.\special{pdf:literal q}
+.\special{pdf:literal 0 -0.99626 86.1355 7.91476 re W n}
+.\hbox(6.94444+1.0)x0.0, glue set - 86.45851fil
+..\hbox(6.94444+1.0)x86.45851
+...\OT1/cmr/m/n/10 G
+...\OT1/cmr/m/n/10 o
+...\OT1/cmr/m/n/10 i
+...\OT1/cmr/m/n/10 n
+...\OT1/cmr/m/n/10 g
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 u
+...\OT1/cmr/m/n/10 p
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 a
+...\OT1/cmr/m/n/10 n
+...\OT1/cmr/m/n/10 d
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 d
+...\OT1/cmr/m/n/10 o
+...\kern-0.27779
+...\OT1/cmr/m/n/10 w
+...\OT1/cmr/m/n/10 n
+..\glue 0.0 plus 1.0fil minus 1.0fil
+.\special{pdf:literal Q}
+.\glue 86.45851
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(6.94444+0.0)x86.45851
+.\special{pdf:literal q}
+.\special{pdf:literal 0 0 86.1355 6.9185 re W n}
+.\hbox(6.94444+0.0)x0.0, glue set - 86.45851fil
+..\hbox(6.94444+0.0)x86.45851
+...\OT1/cmr/m/n/10 G
+...\OT1/cmr/m/n/10 o
+...\OT1/cmr/m/n/10 i
+...\OT1/cmr/m/n/10 n
+...\OT1/cmr/m/n/10 g
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 u
+...\OT1/cmr/m/n/10 p
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 a
+...\OT1/cmr/m/n/10 n
+...\OT1/cmr/m/n/10 d
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 d
+...\OT1/cmr/m/n/10 o
+...\kern-0.27779
+...\OT1/cmr/m/n/10 w
+...\OT1/cmr/m/n/10 n
+..\glue 0.0 plus 1.0fil minus 1.0fil
+.\special{pdf:literal Q}
+.\glue 86.45851
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(6.94444+1.0)x86.45851
+.\special{pdf:literal q}
+.\special{pdf:literal 0 -0.99626 86.1355 7.91476 re W n}
+.\hbox(6.94444+1.0)x0.0, glue set - 86.45851fil
+..\hbox(6.94444+1.0)x86.45851
+...\OT1/cmr/m/n/10 G
+...\OT1/cmr/m/n/10 o
+...\OT1/cmr/m/n/10 i
+...\OT1/cmr/m/n/10 n
+...\OT1/cmr/m/n/10 g
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 u
+...\OT1/cmr/m/n/10 p
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 a
+...\OT1/cmr/m/n/10 n
+...\OT1/cmr/m/n/10 d
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 d
+...\OT1/cmr/m/n/10 o
+...\kern-0.27779
+...\OT1/cmr/m/n/10 w
+...\OT1/cmr/m/n/10 n
+..\glue 0.0 plus 1.0fil minus 1.0fil
+.\special{pdf:literal Q}
+.\glue 86.45851
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(6.94444+1.94444)x20.0
+.\special{pdf:literal q}
+.\special{pdf:literal 0 -1.93718 19.92528 8.85568 re W n}
+.\hbox(6.94444+1.94444)x0.0, glue set - 20.0fil
+..\hbox(6.94444+1.94444)x20.0
+...\OT1/cmr/m/n/10 G
+...\OT1/cmr/m/n/10 o
+...\OT1/cmr/m/n/10 i
+...\OT1/cmr/m/n/10 n
+...\OT1/cmr/m/n/10 g
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 u
+...\OT1/cmr/m/n/10 p
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 a
+...\OT1/cmr/m/n/10 n
+...\OT1/cmr/m/n/10 d
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...\OT1/cmr/m/n/10 d
+...\OT1/cmr/m/n/10 o
+...\kern-0.27779
+...\OT1/cmr/m/n/10 w
+...\OT1/cmr/m/n/10 n
+..\glue 0.0 plus 1.0fil minus 1.0fil
+.\special{pdf:literal Q}
+.\glue 20.0
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+============================================================
+============================================================
+TEST 2: Rotate box
+============================================================
+> \box27=
+\hbox(6.94444+0.0)x50.02786
+.\OT1/cmr/m/n/10 H
+.\OT1/cmr/m/n/10 e
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 o
+.\glue 3.33333 plus 1.66666 minus 1.11111
+.\OT1/cmr/m/n/10 w
+.\kern-0.27779
+.\OT1/cmr/m/n/10 o
+.\OT1/cmr/m/n/10 r
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 d
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(6.94444+0.0)x50.02786
+.\hbox(6.94444+0.0)x50.02786
+..\kern 0.0
+..\hbox(6.94444+0.0)x0.0
+...\special{pdf:literal q}
+...\special{pdf:literal 1 0 0 1 0 0 cm}
+...\hbox(6.94444+0.0)x0.0
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+...\special{pdf:literal Q}
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(31.028+0.0)x46.79762
+.\hbox(31.028+0.0)x46.79762
+..\kern 3.47223
+..\hbox(6.94444+0.0)x0.0
+...\special{pdf:literal q}
+...\special{pdf:literal 0.86603 0.5 -0.5 0.86603 0 0 cm}
+...\hbox(6.94444+0.0)x0.0
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+...\special{pdf:literal Q}
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(40.2855+0.0)x40.2855
+.\hbox(40.2855+0.0)x40.2855
+..\kern 4.91046
+..\hbox(6.94444+0.0)x0.0
+...\special{pdf:literal q}
+...\special{pdf:literal 0.70711 0.70711 -0.70711 0.70711 0 0 cm}
+...\hbox(6.94444+0.0)x0.0
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+...\special{pdf:literal Q}
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(35.37505+4.91046)x40.2855
+.\hbox(35.37505+4.91046)x40.2855
+..\kern 40.2855
+..\hbox(6.94444+0.0)x0.0
+...\special{pdf:literal q}
+...\special{pdf:literal -0.70711 0.70711 -0.70711 -0.70711 0 0 cm}
+...\hbox(6.94444+0.0)x0.0
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+...\special{pdf:literal Q}
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(0.0+40.2855)x40.2855
+.\hbox(0.0+40.2855)x40.2855
+..\kern 35.37505
+..\hbox(6.94444+0.0)x0.0
+...\special{pdf:literal q}
+...\special{pdf:literal -0.70711 -0.70711 0.70711 -0.70711 0 0 cm}
+...\hbox(6.94444+0.0)x0.0
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+...\special{pdf:literal Q}
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(4.91046+35.37505)x40.2855
+.\hbox(4.91046+35.37505)x40.2855
+..\kern 0.0
+..\hbox(6.94444+0.0)x0.0
+...\special{pdf:literal q}
+...\special{pdf:literal 0.70711 -0.70711 0.70711 0.70711 0 0 cm}
+...\hbox(6.94444+0.0)x0.0
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+...\special{pdf:literal Q}
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(56.9723+0.0)x56.97232
+.\hbox(56.9723+0.0)x56.97232
+..\kern 28.48616
+..\hbox(40.2855+0.0)x0.0
+...\special{pdf:literal q}
+...\special{pdf:literal 0.70711 0.70711 -0.70711 0.70711 0 0 cm}
+...\hbox(40.2855+0.0)x0.0
+....\hbox(40.2855+0.0)x40.2855
+.....\hbox(40.2855+0.0)x40.2855
+......\kern 4.91046
+......\hbox(6.94444+0.0)x0.0
+.......\special{pdf:literal q}
+.......\special{pdf:literal 0.70711 0.70711 -0.70711 0.70711 0 0 cm}
+.......\hbox(6.94444+0.0)x0.0
+........\hbox(6.94444+0.0)x50.02786
+.........\OT1/cmr/m/n/10 H
+.........\OT1/cmr/m/n/10 e
+.........\OT1/cmr/m/n/10 l
+.........\OT1/cmr/m/n/10 l
+.........\OT1/cmr/m/n/10 o
+.........\glue 3.33333 plus 1.66666 minus 1.11111
+.........\OT1/cmr/m/n/10 w
+.........\kern-0.27779
+.........\OT1/cmr/m/n/10 o
+.........\OT1/cmr/m/n/10 r
+.........\OT1/cmr/m/n/10 l
+.........\OT1/cmr/m/n/10 d
+.......\special{pdf:literal Q}
+...\special{pdf:literal Q}
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+============================================================
+============================================================
+TEST 3: Scale box
+============================================================
+> \box27=
+\hbox(6.94444+0.0)x50.02786
+.\OT1/cmr/m/n/10 H
+.\OT1/cmr/m/n/10 e
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 o
+.\glue 3.33333 plus 1.66666 minus 1.11111
+.\OT1/cmr/m/n/10 w
+.\kern-0.27779
+.\OT1/cmr/m/n/10 o
+.\OT1/cmr/m/n/10 r
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 d
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(6.94444+0.0)x50.02786
+.\hbox(6.94444+0.0)x50.02786
+..\kern 0.0
+..\hbox(6.94444+0.0)x50.02786
+...\special{pdf:literal q}
+...\special{pdf:literal 1 0 0 1 0 0 cm}
+...\hbox(6.94444+0.0)x0.0, glue set - 50.02786fil
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+....\glue 0.0 plus 1.0fil minus 1.0fil
+...\special{pdf:literal Q}
+..\glue 0.0 plus 1.0fil minus 1.0fil
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(6.94444+0.0)x125.06966
+.\hbox(6.94444+0.0)x125.06966
+..\kern 0.0
+..\hbox(6.94444+0.0)x125.06966
+...\special{pdf:literal q}
+...\special{pdf:literal 2.5 0 0 1 0 0 cm}
+...\hbox(6.94444+0.0)x0.0, glue set - 50.02786fil
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+....\glue 0.0 plus 1.0fil minus 1.0fil
+...\special{pdf:literal Q}
+..\glue 0.0 plus 1.0fil minus 1.0fil
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(2.31477+0.0)x50.02786
+.\hbox(2.31477+0.0)x50.02786
+..\kern 0.0
+..\hbox(2.31477+0.0)x50.02786
+...\special{pdf:literal q}
+...\special{pdf:literal 1 0 0 0.33333 0 0 cm}
+...\hbox(6.94444+0.0)x0.0, glue set - 50.02786fil
+....\hbox(6.94444+0.0)x50.02786
+.....\OT1/cmr/m/n/10 H
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 o
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 w
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 r
+.....\OT1/cmr/m/n/10 l
+.....\OT1/cmr/m/n/10 d
+....\glue 0.0 plus 1.0fil minus 1.0fil
+...\special{pdf:literal Q}
+..\glue 0.0 plus 1.0fil minus 1.0fil
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(6.94444+1.94444)x103.61133
+.\hbox(6.94444+1.94444)x103.61133
+..\kern 0.0
+..\hbox(6.94444+1.94444)x103.61133
+...\special{pdf:literal q}
+...\special{pdf:literal 1 0 0 1 0 0 cm}
+...\hbox(6.94444+1.94444)x0.0, glue set - 103.61133fil
+....\hbox(6.94444+1.94444)x103.61133
+.....\OT1/cmr/m/n/10 T
+.....\kern-0.83334
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 x
+.....\OT1/cmr/m/n/10 t
+.....\OT1/cmr/m/n/10 g
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 i
+.....\OT1/cmr/m/n/10 n
+.....\OT1/cmr/m/n/10 g
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 u
+.....\OT1/cmr/m/n/10 p
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 a
+.....\OT1/cmr/m/n/10 n
+.....\OT1/cmr/m/n/10 d
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 d
+.....\OT1/cmr/m/n/10 o
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 w
+.....\OT1/cmr/m/n/10 n
+....\glue 0.0 plus 1.0fil minus 1.0fil
+...\special{pdf:literal Q}
+..\glue 0.0 plus 1.0fil minus 1.0fil
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(20.83333+5.83333)x310.83398
+.\hbox(20.83333+5.83333)x310.83398
+..\kern 0.0
+..\hbox(20.83333+5.83333)x310.83398
+...\special{pdf:literal q}
+...\special{pdf:literal 3 0 0 3 0 0 cm}
+...\hbox(6.94444+1.94444)x0.0, glue set - 103.61133fil
+....\hbox(6.94444+1.94444)x103.61133
+.....\OT1/cmr/m/n/10 T
+.....\kern-0.83334
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 x
+.....\OT1/cmr/m/n/10 t
+.....\OT1/cmr/m/n/10 g
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 i
+.....\OT1/cmr/m/n/10 n
+.....\OT1/cmr/m/n/10 g
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 u
+.....\OT1/cmr/m/n/10 p
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 a
+.....\OT1/cmr/m/n/10 n
+.....\OT1/cmr/m/n/10 d
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 d
+.....\OT1/cmr/m/n/10 o
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 w
+.....\OT1/cmr/m/n/10 n
+....\glue 0.0 plus 1.0fil minus 1.0fil
+...\special{pdf:literal Q}
+..\glue 0.0 plus 1.0fil minus 1.0fil
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+> \box27=
+\hbox(5.83333+20.83333)x310.83398
+.\hbox(5.83333+20.83333)x310.83398
+..\kern 310.83398
+..\hbox(5.83333+20.83333)x0.0
+...\special{pdf:literal q}
+...\special{pdf:literal -3 0 0 -3 0 0 cm}
+...\hbox(6.94444+1.94444)x0.0, glue set - 103.61133fil
+....\hbox(6.94444+1.94444)x103.61133
+.....\OT1/cmr/m/n/10 T
+.....\kern-0.83334
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 x
+.....\OT1/cmr/m/n/10 t
+.....\OT1/cmr/m/n/10 g
+.....\OT1/cmr/m/n/10 o
+.....\OT1/cmr/m/n/10 i
+.....\OT1/cmr/m/n/10 n
+.....\OT1/cmr/m/n/10 g
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 u
+.....\OT1/cmr/m/n/10 p
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 a
+.....\OT1/cmr/m/n/10 n
+.....\OT1/cmr/m/n/10 d
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 d
+.....\OT1/cmr/m/n/10 o
+.....\kern-0.27779
+.....\OT1/cmr/m/n/10 w
+.....\OT1/cmr/m/n/10 n
+....\glue 0.0 plus 1.0fil minus 1.0fil
+...\special{pdf:literal Q}
+..\glue 0.0 plus 1.0fil minus 1.0fil
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+============================================================
+============================================================
+TEST 4: Color
+============================================================
+> \box71=
+\hbox(6.94444+0.0)x50.02786
+.\special{color push gray 0}
+.\OT1/cmr/m/n/10 H
+.\OT1/cmr/m/n/10 e
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 o
+.\glue 3.33333 plus 1.66666 minus 1.11111
+.\OT1/cmr/m/n/10 w
+.\kern-0.27779
+.\OT1/cmr/m/n/10 o
+.\OT1/cmr/m/n/10 r
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 d
+.\special{color pop}
+! OK.
+<argument> \l_tmpa_coffin
+l. ... }
+============================================================
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the latex3-commits
mailing list