summaryrefslogtreecommitdiff
path: root/doc/context/sources/general/manuals/luametatex
diff options
context:
space:
mode:
Diffstat (limited to 'doc/context/sources/general/manuals/luametatex')
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex-enhancements.tex24
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex-fonts.tex97
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex315
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex-tex.tex30
4 files changed, 224 insertions, 242 deletions
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-enhancements.tex b/doc/context/sources/general/manuals/luametatex/luametatex-enhancements.tex
index 121ffe216..caf4dc55a 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex-enhancements.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex-enhancements.tex
@@ -68,7 +68,7 @@ still going for this new engine are:
\startitemize[packed]
\startitem
some new primitives make for less tracing and tracing has become rather
- verbose over years (just try \prm {tracingall}); examples are the new macro
+ verbose over years (just try \type {tracingall}); examples are the new macro
argument handling and some new hooks
\stopitem
\startitem
@@ -318,16 +318,18 @@ marks is limited. The size of some tables can be limited by configuration
settings, so they can start out small and grow till configured maximum which is
smaller than the absolute maximum.
-The following table shows all kind of defaults as reported by \typ
-{status.getconstants()}.
-
-\startluacode
- context.starttabulate { "|T|r|" }
- for k, v in table.sortedhash(status.getconstants()) do
- context.NC() context(k) context.NC() context(v) context.NC() context.NR()
- end
- context.stoptabulate()
-\stopluacode
+% % We show this later on so not here.
+%
+% The following table shows all kind of defaults as reported by \typ
+% {status.getconstants()}.
+%
+% \startluacode
+% context.starttabulate { "|T|r|" }
+% for k, v in table.sortedhash(status.getconstants()) do
+% context.NC() context(k) context.NC() context(v) context.NC() context.NR()
+% end
+% context.stoptabulate()
+% \stopluacode
Because we have additional ways to store integers, dimensions and glue, we might
actually decide to decrease the maximum of the registers: if 64K is not enough,
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-fonts.tex b/doc/context/sources/general/manuals/luametatex/luametatex-fonts.tex
index b12ebdcb3..62c9d211f 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex-fonts.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex-fonts.tex
@@ -8,14 +8,15 @@
\startsection[title={Introduction}]
-Only traditional font support is built in, anything more needs to be implemented
-in \LUA. This conforms to the \LUATEX\ philosophy. When you pass a font to the
-frontend only the dimensions matter, as these are used in typesetting, and
-optionally ligatures and kerns when you rely on the built|-|in font handler. For
-math some extra data is needed, like information about extensibles and next in
-size glyphs. You can of course put more information in your \LUA\ tables because
-when such a table is passed to \TEX\ only that what is needed is filtered from
-it.
+The traditional \TEX\ ligature and kerning routines are build in but anything
+more (like \OPENTYPE\ rendering) has to be implemented in \LUA. In \CONTEXT\ we
+call the former base mode and the later node mode (we have some more modes). This
+conforms to the \LUATEX\ philosophy. When you pass a font to the frontend only
+the dimensions matter, as these are used in typesetting, and optionally ligatures
+and kerns when you rely on the built|-|in font handler. For math some extra data
+is needed, like information about extensibles and next in size glyphs. You can of
+course put more information in your \LUA\ tables because when such a table is
+passed to \TEX\ only that what is needed is filtered from it.
Because there is no built|-|in backend, virtual font information is not used. If
you want to be compatible you'd better make sure that your tables are okay, and
@@ -81,13 +82,13 @@ The names and their internal remapping are:
\starttabulate[|l|c|]
\DB name \BC remapping \NC \NR
\TB
-\NC \type {slant} \NC 1 \NC \NR
-\NC \type {space} \NC 2 \NC \NR
-\NC \type {space_stretch} \NC 3 \NC \NR
-\NC \type {space_shrink} \NC 4 \NC \NR
-\NC \type {x_height} \NC 5 \NC \NR
-\NC \type {quad} \NC 6 \NC \NR
-\NC \type {extra_space} \NC 7 \NC \NR
+\NC \type {slant} \NC 1 \NC \NR
+\NC \type {space} \NC 2 \NC \NR
+\NC \type {spacestretch} \NC 3 \NC \NR
+\NC \type {spaceshrink} \NC 4 \NC \NR
+\NC \type {xheight} \NC 5 \NC \NR
+\NC \type {quad} \NC 6 \NC \NR
+\NC \type {extraspace} \NC 7 \NC \NR
\LL
\stoptabulate
@@ -107,25 +108,25 @@ that uses the engine, and node mode that uses \LUA. A monospaced font normally
has no ligatures and kerns and is normally not processed at all.
\starttabulate[|l|l|pl|]
-\DB key \BC type \BC description \NC\NR
+\DB key \BC type \BC description \NC\NR
\TB
-\NC \type {width} \NC number \NC width in sp (default 0) \NC\NR
-\NC \type {height} \NC number \NC height in sp (default 0) \NC\NR
-\NC \type {depth} \NC number \NC depth in sp (default 0) \NC\NR
-\NC \type {italic} \NC number \NC italic correction in sp (default 0) \NC\NR
-\NC \type {top_accent} \NC number \NC top accent alignment place in sp (default zero) \NC\NR
-\NC \type {bot_accent} \NC number \NC bottom accent alignment place, in sp (default zero) \NC\NR
-\NC \type {left_protruding} \NC number \NC left protruding factor (\prm {lpcode}) \NC\NR
-\NC \type {right_protruding} \NC number \NC right protruding factor (\prm {rpcode}) \NC\NR
-\NC \type {expansion_factor} \NC number \NC expansion factor (\prm {efcode}) \NC\NR
-\NC \type {next} \NC number \NC \quote {next larger} character index \NC\NR
-\NC \type {extensible} \NC table \NC constituent parts of an extensible recipe \NC\NR
-\NC \type {vert_variants} \NC table \NC constituent parts of a vertical variant set \NC \NR
-\NC \type {horiz_variants} \NC table \NC constituent parts of a horizontal variant set \NC \NR
-\NC \type {kerns} \NC table \NC kerning information \NC\NR
-\NC \type {ligatures} \NC table \NC ligaturing information \NC\NR
-\NC \type {mathkern} \NC table \NC math cut-in specifications \NC\NR
-\NC \type {smaller} \NC number \NC the next smaller math size character \NC\NR
+\NC \type {width} \NC number \NC width in sp (default 0) \NC\NR
+\NC \type {height} \NC number \NC height in sp (default 0) \NC\NR
+\NC \type {depth} \NC number \NC depth in sp (default 0) \NC\NR
+\NC \type {italic} \NC number \NC italic correction in sp (default 0) \NC\NR
+\NC \type {topaccent} \NC number \NC top accent alignment place in sp (default zero) \NC\NR
+\NC \type {botaccent} \NC number \NC bottom accent alignment place, in sp (default zero) \NC\NR
+\NC \type {leftprotruding} \NC number \NC left protruding factor (\prm {lpcode}) \NC\NR
+\NC \type {rightprotruding} \NC number \NC right protruding factor (\prm {rpcode}) \NC\NR
+\NC \type {expansion} \NC number \NC expansion factor (\prm {efcode}) \NC\NR
+\NC \type {next} \NC number \NC \quote {next larger} character index \NC\NR
+\NC \type {extensible} \NC table \NC constituent parts of an extensible recipe \NC\NR
+\NC \type {vvariants} \NC table \NC constituent parts of a vertical variant set \NC \NR
+\NC \type {hvariants} \NC table \NC constituent parts of a horizontal variant set \NC \NR
+\NC \type {kerns} \NC table \NC kerning information \NC\NR
+\NC \type {ligatures} \NC table \NC ligaturing information \NC\NR
+\NC \type {mathkern} \NC table \NC math cut-in specifications \NC\NR
+\NC \type {smaller} \NC number \NC the next smaller math size character \NC\NR
\LL
\stoptabulate
@@ -153,23 +154,23 @@ For example, here is the character \quote {f} (decimal 102) in the font \type
}
\stoptyping
-Two very special string indexes can be used also: \type {left_boundary} is a
+Two very special string indexes can be used also: \type {leftboundary} is a
virtual character whose ligatures and kerns are used to handle word boundary
-processing. \type {right_boundary} is similar but not actually used for anything
+processing. \type {rightboundary} is similar but not actually used for anything
(yet).
-The values of \type {top_accent}, \type {bot_accent} and \type {mathkern} are
-used only for math accent and superscript placement, see \at {page} [math] in
-this manual for details. The values of \type {left_protruding} and \type
-{right_protruding} are used only when \prm {protrudechars} is non-zero. Whether
-or not \type {expansion_factor} is used depends on the font's global expansion
-settings, as well as on the value of \prm {adjustspacing}.
+The values of \type {topaccent}, \type {botaccent} and \type {mathkern} are used
+only for math accent and superscript placement, see \at {page} [math] in this
+manual for details. The values of \type {leftprotrusion} and \type
+{rightprotrusion} are used only when \prm {protrudechars} is non-zero. Whether or
+not \type {expansion} is used depends on the font's global expansion settings, as
+well as on the value of \prm {adjustspacing}.
A math character can have a \type {next} field that points to a next larger
shape. However, the presence of \type {extensible} will overrule \type {next}, if
that is also present. The \type {extensible} field in turn can be overruled by
-\type {vert_variants}, the \OPENTYPE\ version. The \type {extensible} table is
-very simple:
+\type {vvariants}, the \OPENTYPE\ version. The \type {extensible} table is very
+simple:
\starttabulate[|l|l|p|]
\DB key \BC type \BC description \NC\NR
@@ -181,8 +182,8 @@ very simple:
\LL
\stoptabulate
-The \type {horiz_variants} and \type {vert_variants} are arrays of components.
-Each of those components is itself a hash of up to five keys:
+The \type {hvariants} and \type {vvariants} are arrays of components. Each of
+those components is itself a hash of up to five keys:
\starttabulate[|l|l|p|]
\DB key \BC type \BC explanation \NC \NR
@@ -199,12 +200,12 @@ Each of those components is itself a hash of up to five keys:
The \type {kerns} table is a hash indexed by character index (and \quote
{character index} is defined as either a non|-|negative integer or the string
-value \type {right_boundary}), with the values of the kerning to be applied, in
+value \type {rightboundary}), with the values of the kerning to be applied, in
scaled points.
The \type {ligatures} table is a hash indexed by character index (and \quote
{character index} is defined as either a non|-|negative integer or the string
-value \type {right_boundary}), with the values being yet another small hash, with
+value \type {rightboundary}), with the values being yet another small hash, with
two fields:
\starttabulate[|l|l|p|]
@@ -366,7 +367,7 @@ ever seen in the engine.
\NC \type{lua} \NC 1 \NC string,
function \NC execute a \LUA\ script when the glyph is embedded; in case of a
function it gets the font id and character code passed \NC \NR
-\NC \type{image} \NC 1 \NC image \NC output an image (the argument can be either an \type {<image>} variable or an \type {image_spec} table) \NC \NR
+\NC \type{image} \NC 1 \NC image \NC depends on the backend \NC \NR
\NC \type{comment} \NC any \NC any \NC the arguments of this command are ignored \NC \NR
\LL
\stoptabulate
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex b/doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex
index a063de703..e282649fb 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex
@@ -86,22 +86,22 @@ horizontal lists while others are unique for vertical lists. The possible
fields are \showfields {hlist}.
\starttabulate[|l|l|p|]
-\DB field \BC type \BC explanation \NC \NR
+\DB field \BC type \BC explanation \NC \NR
\TB
-\NC \type{subtype} \NC number \NC \showsubtypes{list} \NC \NR
-\NC \type{attr} \NC node \NC list of attributes \NC \NR
-\NC \type{width} \NC number \NC the width of the box \NC \NR
-\NC \type{height} \NC number \NC the height of the box \NC \NR
-\NC \type{depth} \NC number \NC the depth of the box \NC \NR
-\NC \type{direction} \NC number \NC the direction of this box, see~\in [dirnodes] \NC \NR
-\NC \type{shift} \NC number \NC a displacement perpendicular to the character
+\NC \type{subtype} \NC number \NC \showsubtypes{list} \NC \NR
+\NC \type{attr} \NC node \NC list of attributes \NC \NR
+\NC \type{width} \NC number \NC the width of the box \NC \NR
+\NC \type{height} \NC number \NC the height of the box \NC \NR
+\NC \type{depth} \NC number \NC the depth of the box \NC \NR
+\NC \type{direction} \NC number \NC the direction of this box, see~\in [dirnodes] \NC \NR
+\NC \type{shift} \NC number \NC a displacement perpendicular to the character
(hlist) or line (vlist) progression direction \NC \NR
-\NC \type{glue_order} \NC number \NC a number in the range $[0,4]$, indicating the
+\NC \type{glueorder} \NC number \NC a number in the range $[0,4]$, indicating the
glue order \NC \NR
-\NC \type{glue_set} \NC number \NC the calculated glue ratio \NC \NR
-\NC \type{glue_sign} \NC number \NC 0 = \type {normal}, 1 = \type {stretching}, 2 =
- \type {shrinking} \NC \NR
-\NC \type{list} \NC node \NC the first node of the body of this list \NC \NR
+\NC \type{glueset} \NC number \NC the calculated glue ratio \NC \NR
+\NC \type{gluesign} \NC number \NC 0 = \type {normal}, 1 = \type {stretching}, 2 =
+ \type {shrinking} \NC \NR
+\NC \type{list} \NC node \NC the first node of the body of this list \NC \NR
\LL
\stoptabulate
@@ -187,7 +187,7 @@ This node relates to the \prm {insert} primitive and support the fields: \showfi
\stoptabulate
There is a set of extra fields that concern the associated glue: \type {width},
-\type {stretch}, \type {stretch_order}, \type {shrink} and \type {shrink_order}.
+\type {stretch}, \type {stretchorder}, \type {shrink} and \type {shrinkorder}.
These are all numbers.
A warning: never assign a node list to the \type {head} field unless you are sure
@@ -296,14 +296,14 @@ Math nodes represent the boundaries of a math formula, normally wrapped into
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
\TB
-\NC \type{subtype} \NC number \NC \showsubtypes{math} \NC \NR
-\NC \type{attr} \NC node \NC list of attributes \NC \NR
-\NC \type{surround} \NC number \NC width of the \prm {mathsurround} kern \NC \NR
-\NC \type{width} \NC number \NC the horizontal or vertical displacement \NC \NR
-\NC \type{stretch} \NC number \NC extra (positive) displacement or stretch amount \NC \NR
-\NC \type{stretch_order} \NC number \NC factor applied to stretch amount \NC \NR
-\NC \type{shrink} \NC number \NC extra (negative) displacement or shrink amount\NC \NR
-\NC \type{shrink_order} \NC number \NC factor applied to shrink amount \NC \NR
+\NC \type{subtype} \NC number \NC \showsubtypes{math} \NC \NR
+\NC \type{attr} \NC node \NC list of attributes \NC \NR
+\NC \type{surround} \NC number \NC width of the \prm {mathsurround} kern \NC \NR
+\NC \type{width} \NC number \NC the horizontal or vertical displacement \NC \NR
+\NC \type{stretch} \NC number \NC extra (positive) displacement or stretch amount \NC \NR
+\NC \type{stretchorder} \NC number \NC factor applied to stretch amount \NC \NR
+\NC \type{shrink} \NC number \NC extra (negative) displacement or shrink amount\NC \NR
+\NC \type{shrinkorder} \NC number \NC factor applied to shrink amount \NC \NR
\LL
\stoptabulate
@@ -324,16 +324,16 @@ don't use the spec itself but just its values. A glue node has the fields:
\showfields {glue}.
\starttabulate[|l|l|pA{flushleft,tolerant}|]
-\DB field \BC type \BC explanation \NC \NR
+\DB field \BC type \BC explanation \NC \NR
\TB
-\NC \type{subtype} \NC number \NC \showsubtypes{glue} \NC \NR
-\NC \type{attr} \NC node \NC list of attributes \NC \NR
-\NC \type{leader} \NC node \NC pointer to a box or rule for leaders \NC \NR
-\NC \type{width} \NC number \NC the horizontal or vertical displacement \NC \NR
-\NC \type{stretch} \NC number \NC extra (positive) displacement or stretch amount \NC \NR
-\NC \type{stretch_order} \NC number \NC factor applied to stretch amount \NC \NR
-\NC \type{shrink} \NC number \NC extra (negative) displacement or shrink amount\NC \NR
-\NC \type{shrink_order} \NC number \NC factor applied to shrink amount \NC \NR
+\NC \type{subtype} \NC number \NC \showsubtypes{glue} \NC \NR
+\NC \type{attr} \NC node \NC list of attributes \NC \NR
+\NC \type{leader} \NC node \NC pointer to a box or rule for leaders \NC \NR
+\NC \type{width} \NC number \NC the horizontal or vertical displacement \NC \NR
+\NC \type{stretch} \NC number \NC extra (positive) displacement or stretch amount \NC \NR
+\NC \type{stretchorder} \NC number \NC factor applied to stretch amount \NC \NR
+\NC \type{shrink} \NC number \NC extra (negative) displacement or shrink amount\NC \NR
+\NC \type{shrinkorder} \NC number \NC factor applied to shrink amount \NC \NR
\LL
\stoptabulate
@@ -370,13 +370,13 @@ resolve these quantities immediately and we put the current values in the glue
nodes.
\starttabulate[|l|l|pA{flushleft,tolerant}|]
-\DB field \BC type \BC explanation \NC \NR
+\DB field \BC type \BC explanation \NC \NR
\TB
-\NC \type{width} \NC number \NC the horizontal or vertical displacement \NC \NR
-\NC \type{stretch} \NC number \NC extra (positive) displacement or stretch amount \NC \NR
-\NC \type{stretch_order} \NC number \NC factor applied to stretch amount \NC \NR
-\NC \type{shrink} \NC number \NC extra (negative) displacement or shrink amount\NC \NR
-\NC \type{shrink_order} \NC number \NC factor applied to shrink amount \NC \NR
+\NC \type{width} \NC number \NC the horizontal or vertical displacement \NC \NR
+\NC \type{stretch} \NC number \NC extra (positive) displacement or stretch amount \NC \NR
+\NC \type{stretchorder} \NC number \NC factor applied to stretch amount \NC \NR
+\NC \type{shrink} \NC number \NC extra (negative) displacement or shrink amount\NC \NR
+\NC \type{shrinkorder} \NC number \NC factor applied to shrink amount \NC \NR
\LL
\stoptabulate
@@ -396,12 +396,12 @@ The \prm {kern} command creates such nodes but for instance the font and math
machinery can also add them. There are not that many fields: \showfields {kern}.
\starttabulate[|l|l|p|]
-\DB field \BC type \BC explanation \NC \NR
+\DB field \BC type \BC explanation \NC \NR
\TB
-\NC \type{subtype} \NC number \NC \showsubtypes{kern} \NC \NR
-\NC \type{attr} \NC node \NC list of attributes \NC \NR
-\NC \type{kern} \NC number \NC fixed horizontal or vertical advance \NC \NR
-\NC \type{expansion_factor} \NC number \NC multiplier related to hz for font kerns \NC \NR
+\NC \type{subtype} \NC number \NC \showsubtypes{kern} \NC \NR
+\NC \type{attr} \NC node \NC list of attributes \NC \NR
+\NC \type{kern} \NC number \NC fixed horizontal or vertical advance \NC \NR
+\NC \type{expansion} \NC number \NC multiplier related to hz for font kerns \NC \NR
\LL
\stoptabulate
@@ -442,30 +442,30 @@ it considers some input to be text. Glyph nodes are relatively large and have ma
fields: \showfields {glyph}.
\starttabulate[|l|l|p|]
-\DB field \BC type \BC explanation \NC \NR
+\DB field \BC type \BC explanation \NC \NR
\TB
-\NC \type{subtype} \NC number \NC bit field \NC \NR
-\NC \type{attr} \NC node \NC list of attributes \NC \NR
-\NC \type{char} \NC number \NC the character index in the font \NC \NR
-\NC \type{font} \NC number \NC the font identifier \NC \NR
-\NC \type{language} \NC number \NC the language identifier \NC \NR
-\NC \type{left} \NC number \NC the frozen \type {\lefthyphenmnin} value \NC \NR
-\NC \type{right} \NC number \NC the frozen \type {\righthyphenmnin} value \NC \NR
-\NC \type{uchyph} \NC boolean \NC the frozen \prm {uchyph} value \NC \NR
-\NC \type{state} \NC number \NC a user field (replaces the component list) \NC \NR
-\NC \type{xoffset} \NC number \NC a virtual displacement in horizontal direction \NC \NR
-\NC \type{yoffset} \NC number \NC a virtual displacement in vertical direction \NC \NR
-\NC \type{width} \NC number \NC the (original) width of the character \NC \NR
-\NC \type{height} \NC number \NC the (original) height of the character\NC \NR
-\NC \type{depth} \NC number \NC the (original) depth of the character\NC \NR
-\NC \type{expansion_factor} \NC number \NC the to be applied expansion_factor \NC \NR
-\NC \type{data} \NC number \NC a general purpose field for users (we had room for it) \NC \NR
+\NC \type{subtype} \NC number \NC bit field \NC \NR
+\NC \type{attr} \NC node \NC list of attributes \NC \NR
+\NC \type{char} \NC number \NC the character index in the font \NC \NR
+\NC \type{font} \NC number \NC the font identifier \NC \NR
+\NC \type{language} \NC number \NC the language identifier \NC \NR
+\NC \type{left} \NC number \NC the frozen \type {\lefthyphenmnin} value \NC \NR
+\NC \type{right} \NC number \NC the frozen \type {\righthyphenmnin} value \NC \NR
+\NC \type{uchyph} \NC boolean \NC the frozen \prm {uchyph} value \NC \NR
+\NC \type{state} \NC number \NC a user field (replaces the component list) \NC \NR
+\NC \type{xoffset} \NC number \NC a virtual displacement in horizontal direction \NC \NR
+\NC \type{yoffset} \NC number \NC a virtual displacement in vertical direction \NC \NR
+\NC \type{width} \NC number \NC the (original) width of the character \NC \NR
+\NC \type{height} \NC number \NC the (original) height of the character\NC \NR
+\NC \type{depth} \NC number \NC the (original) depth of the character\NC \NR
+\NC \type{expansion} \NC number \NC the to be applied expansion factor \NC \NR
+\NC \type{data} \NC number \NC a general purpose field for users (we had room for it) \NC \NR
\LL
\stoptabulate
The \type {width}, \type {height} and \type {depth} values are read|-|only. The
-\type {expansion_factor} is assigned in the par builder and used in the backend.
-Valid bits for the \type {subtype} field are:
+\type {expansion} is assigned in the par builder and used in the backend. Valid
+bits for the \type {subtype} field are:
\starttabulate[|c|l|]
\DB bit \BC meaning \NC \NR
@@ -478,8 +478,8 @@ Valid bits for the \type {subtype} field are:
\LL
\stoptabulate
-The \type {expansion_factor} has been introduced as part of the separation
-between front- and backend. It is the result of extensive experiments with a more
+The \type {expansion} has been introduced as part of the separation between
+front- and backend. It is the result of extensive experiments with a more
efficient implementation of expansion. Early versions of \LUATEX\ already
replaced multiple instances of fonts in the backend by scaling but contrary to
\PDFTEX\ in \LUATEX\ we now also got rid of font copies in the frontend and
@@ -487,15 +487,15 @@ replaced them by expansion factors that travel with glyph nodes. Apart from a
cleaner approach this is also a step towards a better separation between front-
and backend.
-The \type {is_char} function checks if a node is a glyph node with a subtype still
+The \type {ischar} function checks if a node is a glyph node with a subtype still
less than 256. This function can be used to determine if applying font logic to a
glyph node makes sense. The value \type {nil} gets returned when the node is not
a glyph, a character number is returned if the node is still tagged as character
and \type {false} gets returned otherwise. When nil is returned, the id is also
-returned. The \type {is_glyph} variant doesn't check for a subtype being less
+returned. The \type {isglyph} variant doesn't check for a subtype being less
than 256, so it returns either the character value or nil plus the id. These
helpers are not always faster than separate calls but they sometimes permit
-making more readable tests. The \type {uses_font} helpers takes a node
+making more readable tests. The \type {usesfont} helpers takes a node
and font id and returns true when a glyph or disc node references that font.
\stopsubsection
@@ -529,22 +529,22 @@ This node is inserted at the start of a paragraph. You should not mess
too much with this one. Valid fields are: \showfields {par}.
\starttabulate[|l|l|p|]
-\DB field \BC type \BC explanation \NC \NR
+\DB field \BC type \BC explanation \NC \NR
\TB
-\NC \type{attr} \NC node \NC list of attributes \NC \NR
-\NC \type{pen_inter} \NC number \NC local interline penalty (from \prm {localinterlinepenalty}) \NC \NR
-\NC \type{pen_broken} \NC number \NC local broken penalty (from \prm {localbrokenpenalty}) \NC \NR
-\NC \type{dir} \NC string \NC the direction of this par. see~\in [dirnodes] \NC \NR
-\NC \type{box_left} \NC node \NC the \prm {localleftbox} \NC \NR
-\NC \type{box_left_width} \NC number \NC width of the \prm {localleftbox} \NC \NR
-\NC \type{box_right} \NC node \NC the \prm {localrightbox} \NC \NR
-\NC \type{box_right_width} \NC number \NC width of the \prm {localrightbox} \NC \NR
+\NC \type{attr} \NC node \NC list of attributes \NC \NR
+\NC \type{interlinepenalty} \NC number \NC local interline penalty (from \prm {localinterlinepenalty}) \NC \NR
+\NC \type{brokenpenalty} \NC number \NC local broken penalty (from \prm {localbrokenpenalty}) \NC \NR
+\NC \type{dir} \NC string \NC the direction of this par. see~\in [dirnodes] \NC \NR
+\NC \type{leftbox} \NC node \NC the \prm {localleftbox} \NC \NR
+\NC \type{leftboxwidth} \NC number \NC width of the \prm {localleftbox} \NC \NR
+\NC \type{rightbox} \NC node \NC the \prm {localrightbox} \NC \NR
+\NC \type{rightboxwidth} \NC number \NC width of the \prm {localrightbox} \NC \NR
+\NC \type{middlebox} \NC node \NC the \prm {localmiddlebox} (zero width) \NC \NR
\LL
\stoptabulate
-A warning: never assign a node list to the \type {box_left} or \type {box_right}
-field unless you are sure its internal link structure is correct, otherwise an
-error may result.
+A warning: never assign a node list to one of the box fields unless you are sure
+its internal link structure is correct, otherwise an error may result.
\stopsubsection
@@ -681,19 +681,19 @@ before, the \type {next} and \type {prev} fields are unused, but we do have:
\showfields {delimiter}.
\starttabulate[|l|l|p|]
-\DB field \BC type \BC explanation \NC \NR
+\DB field \BC type \BC explanation \NC \NR
\TB
-\NC \type{attr} \NC node \NC list of attributes \NC \NR
-\NC \type{small_char} \NC number \NC character index of base character \NC \NR
-\NC \type{small_fam} \NC number \NC family number of base character \NC \NR
-\NC \type{large_char} \NC number \NC character index of next larger character \NC \NR
-\NC \type{large_fam} \NC number \NC family number of next larger character \NC \NR
+\NC \type{attr} \NC node \NC list of attributes \NC \NR
+\NC \type{smallchar} \NC number \NC character index of base character \NC \NR
+\NC \type{smallfamily} \NC number \NC family number of base character \NC \NR
+\NC \type{largechar} \NC number \NC character index of next larger character \NC \NR
+\NC \type{largefamily} \NC number \NC family number of next larger character \NC \NR
\LL
\stoptabulate
-The fields \type {large_char} and \type {large_fam} can be zero, in that case the
-font that is set for the \type {small_fam} is expected to provide the large
-version as an extension to the \type {small_char}.
+The fields \type {largechar} and \type {largefamily} can be zero, in that case
+the font that is set for the \type {smallfamily} is expected to provide the large
+version as an extension to the \type {smallchar}.
\stopsubsubsection
@@ -724,13 +724,13 @@ Accent nodes deal with stuff on top or below a math constructs. They support:
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
\TB
-\NC \type{subtype} \NC number \NC \showsubtypes{accent} \NC \NR
-\NC \type{nucleus} \NC kernel node \NC base \NC \NR
-\NC \type{sub} \NC kernel node \NC subscript \NC \NR
-\NC \type{sup} \NC kernel node \NC superscript \NC \NR
-\NC \type{accent} \NC kernel node \NC top accent \NC \NR
-\NC \type{bot_accent} \NC kernel node \NC bottom accent \NC \NR
-\NC \type{fraction} \NC number \NC larger step criterium (divided by 1000) \NC \NR
+\NC \type{subtype} \NC number \NC \showsubtypes{accent} \NC \NR
+\NC \type{nucleus} \NC kernel node \NC base \NC \NR
+\NC \type{sub} \NC kernel node \NC subscript \NC \NR
+\NC \type{sup} \NC kernel node \NC superscript \NC \NR
+\NC \type{topaccent} \NC kernel node \NC top accent \NC \NR
+\NC \type{botaccent} \NC kernel node \NC bottom accent \NC \NR
+\NC \type{fraction} \NC number \NC larger step criterium (divided by 1000) \NC \NR
\LL
\stoptabulate
@@ -1048,14 +1048,14 @@ This function probably is not that useful but some nodes don't have a \type
\stopsubsubsection
-\startsubsubsection[title={\type {is_node}}]
+\startsubsubsection[title={\type {isnode}}]
\topicindex {nodes+functions}
-\libindex {is_node}
+\libindex {isnode}
\startfunctioncall
-<boolean|integer> t = node.is_node(<any> item)
+<boolean|integer> t = node.isnode(<any> item)
\stopfunctioncall
This function returns a number (the internal index of the node) if the argument
@@ -1336,12 +1336,12 @@ If the above is unclear to you, see the section \quote {For Statement} in the
\stopsubsubsection
-\startsubsubsection[title={\type {traverse_id}}]
+\startsubsubsection[title={\type {traverseid}}]
-\libindex {traverse_id}
+\libindex {traverseid}
\startfunctioncall
-<node> t, subtype = node.traverse_id(<number> id, <node> n)
+<node> t, subtype = node.traverseid(<number> id, <node> n)
\stopfunctioncall
This is an iterator that loops over all the nodes in the list that starts at
@@ -1367,37 +1367,37 @@ See the previous section for details. The change is in the local function \type
\stopsubsubsection
-\startsubsubsection[title={\type {traverse_char} and \type {traverse_glyph}}]
+\startsubsubsection[title={\type {traversechar} and \type {traverseglyph}}]
-\libindex {traverse_char}
-\libindex {traverse_glyph}
+\libindex {traversechar}
+\libindex {traverseglyph}
-The \type{traverse_char} iterator loops over the \nod {glyph} nodes in a list.
+The \type {traversechar} iterator loops over the \nod {glyph} nodes in a list.
Only nodes with a subtype less than 256 are seen.
\startfunctioncall
-<direct> n, font, char = node.direct.traverse_char(<direct> n)
+<direct> n, font, char = node.direct.traversechar(<direct> n)
\stopfunctioncall
-The \type{traverse_glyph} iterator loops over a list and returns the list and
+The \type{traverseglyph} iterator loops over a list and returns the list and
filters all glyphs:
\startfunctioncall
-<direct> n, font, char = node.traverse_glyph(<direct> n)
+<direct> n, font, char = node.traverseglyph(<direct> n)
\stopfunctioncall
These functions are only available for direct nodes.
\stopsubsubsection
-\startsubsubsection[title={\type {traverse_list}}]
+\startsubsubsection[title={\type {traverselist}}]
-\libindex {traverse_list}
+\libindex {traverselist}
This iterator loops over the \nod {hlist} and \nod {vlist} nodes in a list.
\startfunctioncall
-<direct> n, id, subtype, list = node.traverse_list(<direct> n)
+<direct> n, id, subtype, list = node.traverselist(<direct> n)
\stopfunctioncall
The four return values can save some time compared to fetching these fields but
@@ -1406,15 +1406,15 @@ nodes.
\stopsubsubsection
-\startsubsubsection[title={\type {traverse_content}}]
+\startsubsubsection[title={\type {traversecontent}}]
-\libindex {traverse_content}
+\libindex {traversecontent}
This iterator loops over nodes that have content: \nod {hlist}, \nod {vlist}, \nod {glue}
with leaders, \nod {glyphs}, \nod {disc} and \nod {rules} nodes.
\startfunctioncall
-<direct> n, id, subtype[, list|leader] = node.traverse_list(<direct> n)
+<direct> n, id, subtype[, list|leader] = node.traverselist(<direct> n)
\stopfunctioncall
The four return values can save some time compared to fetching these fields but
@@ -1442,13 +1442,13 @@ end
for n in node.traverse(l,true,true) do
print("3>",n)
end
-for n in node.traverse_id(nodes.nodecodes.glyph,l) do
+for n in node.traverseid(nodes.nodecodes.glyph,l) do
print("4>",n)
end
-for n in node.traverse_id(nodes.nodecodes.glyph,l,true) do
+for n in node.traverseid(nodes.nodecodes.glyph,l,true) do
print("5>",n)
end
-for n in node.traverse_id(nodes.nodecodes.glyph,l,true,true) do
+for n in node.traverseid(nodes.nodecodes.glyph,l,true,true) do
print("6>",n)
end
\stoptyping
@@ -1491,15 +1491,15 @@ been processed by the font handlers):
\stopsubsection
-\startsubsubsection[title={\type {find_node}}]
+\startsubsubsection[title={\type {findnode}}]
-\libindex {find_node}
+\libindex {findnode}
This helper returns the location of the first match at or after node \type {n}:
\startfunctioncall
-<node> n = node.find_node(<node> n, <integer> subtype)
-<node> n, subtype = node.find_node(<node> n)
+<node> n = node.findnode(<node> n, <integer> subtype)
+<node> n, subtype = node.findnode(<node> n)
\stopfunctioncall
\stopsubsubsection
@@ -1518,7 +1518,7 @@ passed the property becomes zero.
\startfunctioncall
node.setglue(<node> n)
-node.setglue(<node> n,width,stretch,shrink,stretch_order,shrink_order)
+node.setglue(<node> n,width,stretch,shrink,stretchorder,shrinkorder)
\stopfunctioncall
When you pass values, only arguments that are numbers are assigned so
@@ -1540,8 +1540,8 @@ When a list node is passed, you set the glue, order and sign instead.
The next call will return 5 values or nothing when no glue is passed.
\startfunctioncall
-<integer> width, <integer> stretch, <integer> shrink, <integer> stretch_order,
- <integer> shrink_order = node.getglue(<node> n)
+<integer> width, <integer> stretch, <integer> shrink, <integer> stretchorder,
+ <integer> shrinkorder = node.getglue(<node> n)
\stopfunctioncall
When the second argument is false, only the width is returned (this is consistent
@@ -1750,17 +1750,17 @@ end of the list.
\stopsubsubsection
-\startsubsubsection[title={\type {is_char} and \type {is_glyph}}]
+\startsubsubsection[title={\type {ischar} and \type {isglyph}}]
-\libindex {is_char}
-\libindex {is_glyph}
+\libindex {ischar}
+\libindex {isglyph}
The subtype of a glyph node signals if the glyph is already turned into a character reference
or not.
\startfunctioncall
-<boolean> b = node.is_char(<node> n)
-<boolean> b = node.is_glyph(<node> n)
+<boolean> b = node.ischar(<node> n)
+<boolean> b = node.isglyph(<node> n)
\stopfunctioncall
\stopsubsubsection
@@ -1947,21 +1947,6 @@ of \type {hpack} for a few memory allocation caveats.
\stopsubsubsection
-\startsubsubsection[title={\type {prepend_prevdepth}}]
-
-\libindex {prepend_prevdepth}
-
-This function is somewhat special in the sense that it is an experimental helper
-that adds the interlinespace to a line keeping the baselineskip and lineskip into
-account.
-
-\startfunctioncall
-<node> n, <number> delta =
- node.prepend_prevdepth(<node> n,<number> prevdepth)
-\stopfunctioncall
-
-\stopsubsubsection
-
\startsubsubsection[title={\type {dimensions}, \type {rangedimensions}, \type {naturalwidth}}]
\libindex{dimensions}
@@ -1982,10 +1967,10 @@ is also possible:
\startfunctioncall
<number> w, <number> h, <number> d =
- node.dimensions(<number> glue_set, <number> glue_sign, <number> glue_order,
+ node.dimensions(<number> glueset, <number> gluesign, <number> glueorder,
<node> n)
<number> w, <number> h, <number> d =
- node.dimensions(<number> glue_set, <number> glue_sign, <number> glue_order,
+ node.dimensions(<number> glueset, <number> gluesign, <number> glueorder,
<node> n, <node> t)
\stopfunctioncall
@@ -1998,9 +1983,9 @@ example in code like this, which prints the width of the space in between the
\setbox0 = \hbox to 20pt {a b}
\directlua{print (node.dimensions(
- tex.box[0].glue_set,
- tex.box[0].glue_sign,
- tex.box[0].glue_order,
+ tex.box[0].glueset,
+ tex.box[0].gluesign,
+ tex.box[0].glueorder,
tex.box[0].head.next,
node.tail(tex.box[0].head)
)) }
@@ -2048,12 +2033,12 @@ as for the callback \cbk {mlisttohlist}.
\stopsubsubsection
-\startsubsubsection[title={\type {end_of_math}}]
+\startsubsubsection[title={\type {endofmath}}]
-\libindex {end_of_math}
+\libindex {endofmath}
\startfunctioncall
-<node> t = node.end_of_math(<node> start)
+<node> t = node.endofmath(<node> start)
\stopfunctioncall
Looks for and returns the next \type {math_node} following the \type {start}. If
@@ -2302,7 +2287,6 @@ emulated in \LUA\ and not in the engine, so we retain downward compatibility.
\supported {mlisttohlist} \nop \yes \yes
\supported {naturalwidth} \nop \yes \yes
\supported {new} \yes \yes \relax
-%supported {prepend_prevdepth} \nop \yes \yes
\supported {protectglyphs} \nop \yes \yes
\supported {protectglyph} \nop \yes \yes
\supported {protrusionskippable} \nop \yes \yes
@@ -2366,11 +2350,11 @@ emulated in \LUA\ and not in the engine, so we retain downward compatibility.
\supported {tostring} \yes \nop \relax
\supported {total} \nop \yes \relax
\supported {tovaliddirect} \nop \yes \relax
-\supported {traverse_char} \yes \yes \relax
-\supported {traverse_content} \yes \yes \relax
-\supported {traverse_glyph} \yes \yes \relax
-\supported {traverse_id} \yes \yes \relax
-\supported {traverse_list} \yes \yes \relax
+\supported {traversechar} \yes \yes \relax
+\supported {traversecontent} \yes \yes \relax
+\supported {traverseglyph} \yes \yes \relax
+\supported {traverseid} \yes \yes \relax
+\supported {traverselist} \yes \yes \relax
\supported {traverse} \yes \yes \relax
\supported {type} \yes \nop \relax
\supported {unprotectglyphs} \nop \yes \yes
@@ -2406,13 +2390,6 @@ true for the \type {width}, \type {height} and \type {depth} of glue nodes. Thes
actually access the spec node properties, and here we can set as well as get the
values.
-In some places \LUATEX\ can do a bit of extra checking for valid node lists and
-you can enable that with:
-
-\startfunctioncall
-node.fix_node_lists(<boolean> b)
-\stopfunctioncall
-
You can set and query the \SYNCTEX\ fields, a file number aka tag and a line
number, for a glue, kern, hlist, vlist, rule and math nodes as well as glyph
nodes (although this last one is not used in native \SYNCTEX).
@@ -2595,13 +2572,9 @@ to do that at the lua end e.g.\ using a metatable \type {__index} method. That
way it is under macro package control. When deleting a node, we could keep the
slot (e.g. setting it to false) but it could make memory consumption raise
unneeded when we have temporary large node lists and after that only small lists.
-Both are not done.
-
-So in the end this is what happens now: when a node is copied, and it has a table
-as property, the new node will share that table. If the second argument of \typ
-{set_properties_mode} is \type {true} then a metatable approach is chosen: the
-copy gets its own table with the original table as metatable. If you use the
-generic font loader the mode is enabled that way.
+Both are not done because in the end this is what happens now: when a node is
+copied, and it has a table as property, the new node will share that table. The
+copy gets its own table with the original table as metatable.
A few more experiments were done. For instance: copy attributes to the properties
so that we have fast access at the \LUA\ end. In the end the overhead is not
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-tex.tex b/doc/context/sources/general/manuals/luametatex/luametatex-tex.tex
index b7b150560..089a8202d 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex-tex.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex-tex.tex
@@ -860,18 +860,20 @@ The virtual table \type {tex.lists} contains the set of internal registers that
keep track of building page lists.
\starttabulate[|l|p|]
-\DB field \BC explanation \NC \NR
+\DB field \BC explanation \NC \NR
\TB
-\NC \type{page_ins_head} \NC circular list of pending insertions \NC \NR
-\NC \type{contribute_head} \NC the recent contributions \NC \NR
-\NC \type{page_head} \NC the current page content \NC \NR
-%NC \type{temp_head} \NC \NC \NR
-\NC \type{hold_head} \NC used for held-over items for next page \NC \NR
-\NC \type{adjust_head} \NC head of the current \prm {vadjust} list \NC \NR
-\NC \type{pre_adjust_head} \NC head of the current \type {\vadjust pre} list \NC \NR
-%NC \type{align_head} \NC \NC \NR
-\NC \type{page_discards_head} \NC head of the discarded items of a page break \NC \NR
-\NC \type{split_discards_head} \NC head of the discarded items in a vsplit \NC \NR
+\NC \type{pageinserthead} \NC circular list of pending insertions \NC \NR
+\NC \type{contributehead} \NC the recent contributions \NC \NR
+\NC \type{pagehead} \NC the current page content \NC \NR
+%NC \type{temphead} \NC \NC \NR
+\NC \type{holdhead} \NC used for held-over items for next page \NC \NR
+\NC \type{postadjusthead} \NC head of the (pending) post adjustments \NC \NR
+\NC \type{preadjusthead} \NC head of the (pending) pre adjustments \NC \NR
+\NC \type{postmigratehead} \NC head of the (pending) post migrations \NC \NR
+\NC \type{premigratehead} \NC head of the (pending) pre migrations \NC \NR
+%NC \type{alignhead} \NC \NC \NR
+\NC \type{pagediscardshead} \NC head of the discarded items of a page break \NC \NR
+\NC \type{splitdiscardshead} \NC head of the discarded items in a vsplit \NC \NR
\LL
\stoptabulate
@@ -925,7 +927,7 @@ The known fields are:
\NC \type{direction} \NC node \NC hmode \NC stack used for temporary storage by the line break algorithm \NC \NR
\NC \type{noad} \NC node \NC mmode \NC used for temporary storage of a pending fraction numerator,
for \prm {over} etc. \NC \NR
-\NC \type{delimptr} \NC node \NC mmode \NC used for temporary storage of the previous math delimiter,
+\NC \type{delimiter} \NC node \NC mmode \NC used for temporary storage of the previous math delimiter,
for \prm {middle} \NC \NR
\NC \type{mathdir} \NC boolean \NC mmode \NC true when during math processing the \prm {mathdirection} is not
the same as the surrounding \prm {textdirection} \NC \NR
@@ -1714,6 +1716,10 @@ which is a side effect of a more granular and dynamic memory management.
\ML
\NC \type{formatname} \NC string \NC \NC \NC \NR
\NC \type{jobname} \NC string \NC \NC \NC \NR
+\ML
+\NC \type{starttime} \NC number \NC \NC for testing only \NC \NR
+\NC \type{useutctime} \NC number \NC \NC for testing only \NC \NR
+\NC \type{permitloadlib} \NC number \NC \NC for testing only \NC \NR
\LL
\stoptabulate