[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