summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorContext Git Mirror Bot <phg42.2a@gmail.com>2016-03-30 12:07:47 +0200
committerContext Git Mirror Bot <phg42.2a@gmail.com>2016-03-30 12:07:47 +0200
commited2c824995ef51ddb1dfc1fa2a526933cd377cda (patch)
treed70dbfc0cfe6b33c0b87c662d259e5fc53cb9afd
parentf025339d0770904176dd9b32a405b23f809772ae (diff)
downloadcontext-ed2c824995ef51ddb1dfc1fa2a526933cd377cda.tar.gz
2016-03-30 12:01:00
-rw-r--r--doc/context/documents/general/manuals/luatex.pdfbin1017376 -> 1023946 bytes
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex-libraries.tex17
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex-nodes.tex56
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex-titlepage.tex3
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex.tex3
-rw-r--r--tex/context/base/context-version.pdfbin4162 -> 4165 bytes
-rw-r--r--tex/context/base/mkiv/colo-imp-ral.mkiv239
-rw-r--r--tex/context/base/mkiv/colo-imp-x11.mkiv13
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/font-ini.mkvi30
-rw-r--r--tex/context/base/mkiv/font-mps.lua13
-rw-r--r--tex/context/base/mkiv/lpdf-tag.lua1
-rw-r--r--tex/context/base/mkiv/node-acc.lua2
-rw-r--r--tex/context/base/mkiv/node-ltp.lua49
-rw-r--r--tex/context/base/mkiv/node-met.lua50
-rw-r--r--tex/context/base/mkiv/node-nut.lua38
-rw-r--r--tex/context/base/mkiv/node-res.lua122
-rw-r--r--tex/context/base/mkiv/node-ser.lua1
-rw-r--r--tex/context/base/mkiv/node-tra.lua6
-rw-r--r--tex/context/base/mkiv/page-flt.lua2
-rw-r--r--tex/context/base/mkiv/scrn-ref.mkvi3
-rw-r--r--tex/context/base/mkiv/scrp-ini.lua15
-rw-r--r--tex/context/base/mkiv/spac-prf.lua5
-rw-r--r--tex/context/base/mkiv/spac-ver.lua57
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin8978 -> 9121 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin266912 -> 267198 bytes
-rw-r--r--tex/context/base/mkiv/typo-cap.lua4
-rw-r--r--tex/context/base/mkiv/typo-dua.lua1
-rw-r--r--tex/context/base/mkiv/typo-dub.lua1
-rw-r--r--tex/context/base/mkiv/typo-krn.lua30
-rw-r--r--tex/context/base/mkiv/typo-tal.lua4
-rw-r--r--tex/context/modules/mkiv/m-nodechart.lua4
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
34 files changed, 476 insertions, 299 deletions
diff --git a/doc/context/documents/general/manuals/luatex.pdf b/doc/context/documents/general/manuals/luatex.pdf
index 81a7c42b9..760995ea8 100644
--- a/doc/context/documents/general/manuals/luatex.pdf
+++ b/doc/context/documents/general/manuals/luatex.pdf
Binary files differ
diff --git a/doc/context/sources/general/manuals/luatex/luatex-libraries.tex b/doc/context/sources/general/manuals/luatex/luatex-libraries.tex
index 71d14040b..df81bcea4 100644
--- a/doc/context/sources/general/manuals/luatex/luatex-libraries.tex
+++ b/doc/context/sources/general/manuals/luatex/luatex-libraries.tex
@@ -5266,8 +5266,8 @@ registers:
\startfunctioncall
tex.setskip (<number> n, <node> s)
tex.setskip (<string> s, <node> s)
-tex.setskip ('global',<number> n, <node> s)
-tex.setskip ('global',<string> s, <node> s)
+tex.setskip ("global",<number> n, <node> s)
+tex.setskip ("global",<string> s, <node> s)
<node> s = tex.getskip (<number> n)
<node> s = tex.getskip (<string> s)
\stopfunctioncall
@@ -5285,6 +5285,19 @@ tex.scantoks("global",0,"$\int\limits^1_2$")
In the function-based interface, it is possible to define values globally by
using the string \type {global} as the first function argument.
+There are four extra skip related helpers:
+
+\startfunctioncall
+tex.setglue (<number> n, width, stretch, shrink, stretch_order, shrink_order)
+tex.setglue (<string> s, width, stretch, shrink, stretch_order, shrink_order)
+tex.setglue ("global",<number> n, width, stretch, shrink, stretch_order, shrink_order)
+tex.setglue ("global",<string> s, width, stretch, shrink, stretch_order, shrink_order)
+width, stretch, shrink, stretch_order, shrink_order = tex.getglue (<number> n)
+width, stretch, shrink, stretch_order, shrink_order = tex.getglue (<string> s)
+\stopfunctioncall
+
+The other two are \type {tex.setmuglue} and \type {tex.getmuglue}.
+
\subsection{Character code registers}
\TEX's character code tables (\type {\lccode}, \type {\uccode}, \type {\sfcode}, \type
diff --git a/doc/context/sources/general/manuals/luatex/luatex-nodes.tex b/doc/context/sources/general/manuals/luatex/luatex-nodes.tex
index 9b67b1f61..a48e2f267 100644
--- a/doc/context/sources/general/manuals/luatex/luatex-nodes.tex
+++ b/doc/context/sources/general/manuals/luatex/luatex-nodes.tex
@@ -198,10 +198,14 @@ Id: \showid{ins}
\NC depth \NC number \NC \NC \NR
\NC head/list \NC \syntax{<node>} \NC the first node of the body of this
insert \NC \NR
-\NC spec \NC \syntax{<node>} \NC a pointer to the \type {\splittopskip}
- glue spec \NC \NR
+%NC spec \NC \syntax{<node>} \NC a pointer to the \type {\splittopskip}
+% glue spec \NC \NR
\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}.
+These are all numbers.
+
A warning: never assign a node list to the \type {head} field unless you are sure
its internal link structure is correct, otherwise an error may be result. You can use
\type {list} instead (often in functions you want to use local variable swith similar
@@ -279,6 +283,10 @@ Id: \showid{math}
\NC surround \NC number \NC width of the \type {\mathsurround} kern \NC \NR
\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}.
+These are all numbers.
+
\subsubsection{glue nodes}
Skips are about the only type of data objects in traditional \TEX\ that are not a
@@ -292,9 +300,6 @@ called a \type {glue_spec}, and it has the following accessible fields:
\NC stretch_order \NC number \NC \NC \NR
\NC shrink \NC number \NC \NC \NR
\NC shrink_order \NC number \NC \NC \NR
-\NC writable \NC boolean \NC If this is true, you can't assign to this
- \type {glue_spec} because it is one of the
- preallocated special cases. \NC \NR
\stoptabulate
% These objects are reference counted, so there is actually an extra read|-|only
@@ -309,26 +314,41 @@ the content fit in the available space. The \type {effective_glue} function that
takes a glue node and a parent (hlist or vlist) returns the effective width of
that glue item.
-A spec node is normally references to from a glue node:
+A gluespec node is a special kind of node that is used for storing a set of glue
+values in registers. Originally they were also used to store properties of glue
+nodes (using a system of reference counts) but we now keep these properties in
+the glue nodes themselves, which gives a cleaner interface to \LUA.
+
+The indirect spec approach was in fact an optimization in the original \TEX\
+code. First of all it can save quite some memory because all these spaces that
+become glue now share the same specification (only the reference count is
+incremented), and zero testing is also a bit faster because only the pointer has
+to be checked (this is no longer true for engines that implement for instance
+protrusion where we really need to ensure that zero is zero when we test for
+bounds). Another side effect is that glue specifications are read|-|only, so in
+the end copies need to be made when they are used from \LUA\ (each assignment to
+a field can result in a new copy). So in the end the advantages of sharing are
+not that high (and nowadays memory is less an issue, also given that a glue node
+is only a few memory words larger than a spec).
Valid fields: \showfields{glue}\crlf
Id: \showid{glue}
\starttabulate[|lT|l|p|]
-\NC \ssbf field \NC \bf type \NC \bf explanation \NC \NR
-\NC subtype \NC number \NC \type {0} = \type {\skip},
- \type {1-18} = internal glue parameters,
- \type {100-103} = \quote {leader} subtypes \NC \NR
-\NC attr \NC \syntax{<node>} \NC \NC \NR
-\NC spec \NC \syntax{<node>} \NC pointer to a glue_spec item \NC \NR
-\NC leader \NC \syntax{<node>} \NC pointer to a box or rule for leaders \NC \NR
+\NC \ssbf field \NC \bf type \NC \bf explanation \NC \NR
+\NC subtype \NC number \NC \type {0} = \type {\skip},
+ \type {1-18} = internal glue parameters,
+ \type {98-99} = \quote {math glue} subtypes
+ \type {100-103} = \quote {leader} subtypes \NC \NR
+\NC attr \NC \syntax{<node>} \NC \NC \NR
+\NC leader \NC \syntax{<node>} \NC pointer to a box or rule for leaders \NC \NR
+\NC width \NC number \NC \NC \NR
+\NC stretch \NC number \NC \NC \NR
+\NC stretch_order \NC number \NC \NC \NR
+\NC shrink \NC number \NC \NC \NR
+\NC shrink_order \NC number \NC \NC \NR
\stoptabulate
-The indirect spec approach is an optimization in the original \TEX\ code. First
-of all it saves quite some memory because all these spaces that become glue now
-share the same specification, and zero testing is also faster because only the
-pointer has to be checked.
-
The exact meanings of the subtypes are as follows:
\starttabulate[|rT|l|]
diff --git a/doc/context/sources/general/manuals/luatex/luatex-titlepage.tex b/doc/context/sources/general/manuals/luatex/luatex-titlepage.tex
index 20c22160d..8ab56f85d 100644
--- a/doc/context/sources/general/manuals/luatex/luatex-titlepage.tex
+++ b/doc/context/sources/general/manuals/luatex/luatex-titlepage.tex
@@ -32,7 +32,8 @@
[align=flushright,
foregroundcolor=blue,
frame=off]
- {\currentdate[month,space,year]\par
+ {\doifsomething{\documentvariable{status}}{\documentvariable{status}\par}
+ \currentdate[month,space,year]\par
Version \documentvariable{version}}
\stopstandardmakeup
diff --git a/doc/context/sources/general/manuals/luatex/luatex.tex b/doc/context/sources/general/manuals/luatex/luatex.tex
index 5dea07094..dd5bfac7c 100644
--- a/doc/context/sources/general/manuals/luatex/luatex.tex
+++ b/doc/context/sources/general/manuals/luatex/luatex.tex
@@ -9,7 +9,8 @@
\dontcomplain
\startdocument
- [version=0.90.0]
+ [version=0.95.0,
+ status=Experimental]
\component luatex-titlepage
diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf
index ad9e2f68e..fb8f7e3eb 100644
--- a/tex/context/base/context-version.pdf
+++ b/tex/context/base/context-version.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/colo-imp-ral.mkiv b/tex/context/base/mkiv/colo-imp-ral.mkiv
new file mode 100644
index 000000000..e7b1a2408
--- /dev/null
+++ b/tex/context/base/mkiv/colo-imp-ral.mkiv
@@ -0,0 +1,239 @@
+%D \module
+%D [ file=colo-imp-ral,
+%D version=2009.11.13,
+%D title=\CONTEXT\ Color Macros,
+%D subtitle=RAL,
+%D author=Alan Braslau]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D RAL color system (Deutsches Institut für Gütesicherung und Kennzeichnung)
+%D approximate RGB colors (from \goto {ralcolor.com} [url(http://www.ralcolor.com)];
+%D see also \goto {ralcolors.com} [url(http://www.ralcolors.com)]). These could be
+%D good candidates for use as spot colors.
+
+\startprotectedcolors
+
+ % Deutsch English Français Español Italiano Nederlands
+
+\definecolor [RAL1000] [h=BEBD7F] % Grünbeige Green beige Beige vert Beige verdoso Beige verdastro Groenbeige
+\definecolor [RAL1001] [h=C2B078] % Beige Beige Beige Beige Beige Beige
+\definecolor [RAL1002] [h=C6A664] % Sandgelb Sand yellow Jaune sable Amarillo arena Giallo sabbia Zandgeel
+\definecolor [RAL1003] [h=E5BE01] % Signalgelb Signal yellow Jaune de sécurité Amarillo señales Giallo segnale Signaalgeel
+\definecolor [RAL1004] [h=CDA434] % Goldgelb Golden yellow Jaune or Amarillo oro Giallo oro Goudgeel
+\definecolor [RAL1005] [h=A98307] % Honiggelb Honey yellow Jaune miel Amarillo miel Giallo miele Honinggeel
+\definecolor [RAL1006] [h=E4A010] % Maisgelb Maize yellow Jaune maïs Amarillo maiz Giallo polenta Maisgeel
+\definecolor [RAL1007] [h=DC9D00] % Narzissengelb Daffodil yellow Jaune narcisse Amarillo narciso Giallo narciso Narcissengeel
+\definecolor [RAL1011] [h=8A6642] % Braunbeige Brown beige Beige brun Beige pardo Beige marrone Bruinbeige
+\definecolor [RAL1012] [h=C7B446] % Zitronengelb Lemon yellow Jaune citron Amarillo limón Giallo limone Citroengeel
+\definecolor [RAL1013] [h=EAE6CA] % Perlweiß Oyster white Blanc perlé Blanco perla Bianco perla Parelwit
+\definecolor [RAL1014] [h=E1CC4F] % Elfenbein Ivory Ivoire Marfil Avorio Ivoorkleurig
+\definecolor [RAL1015] [h=E6D690] % Hellelfenbein Light ivory Ivoire clair Marfil claro Avorio chiaro Licht ivoorkleurig
+\definecolor [RAL1016] [h=EDFF21] % Schwefelgelb Sulfur yellow Jaune soufre Amarillo azufre Giallo zolfo Zwavelgeel
+\definecolor [RAL1017] [h=F5D033] % Safrangelb Saffron yellow Jaune safran Amarillo azafrán Giallo zafferano Saffraangeel
+\definecolor [RAL1018] [h=F8F32B] % Zinkgelb Zinc yellow Jaune zinc Amarillo de zinc Giallo zinco Zinkgeel
+\definecolor [RAL1019] [h=9E9764] % Graubeige Grey beige Beige gris Beige agrisado Beige grigiastro Grijsbeige
+\definecolor [RAL1020] [h=999950] % Olivgelb Olive yellow Jaune olive Amarillo oliva Giallo olivastro Olijfgeel
+\definecolor [RAL1021] [h=F3DA0B] % Rapsgelb Rape yellow Jaune colza Amarillo colza Giallo navone Koolzaadgeel
+\definecolor [RAL1023] [h=FAD201] % Verkehrsgelb Traffic yellow Jaune signalisation Amarillo tráfico Giallo traffico Verkeersgeel
+\definecolor [RAL1024] [h=AEA04B] % Ockergelb Ochre yellow Jaune ocre Amarillo ocre Giallo ocra Okergeel
+\definecolor [RAL1026] [h=FFFF00] % Leuchtgelb Luminous yellow Jaune brillant Amarillo brillante Giallo brillante Briljantgeel
+\definecolor [RAL1027] [h=9D9101] % Currygelb Curry Jaune curry Amarillo curry Giallo curry Kerriegeel
+\definecolor [RAL1028] [h=F4A900] % Melonengelb Melon yellow Jaune melon Amarillo melón Giallo melone Meloengeel
+\definecolor [RAL1032] [h=D6AE01] % Ginstergelb Broom yellow Jaune genêt Amarillo retama Giallo scopa Bremgeel
+\definecolor [RAL1033] [h=F3A505] % Dahliengelb Dahlia yellow Jaune dahlia Amarillo dalia Giallo dahlien Dahliageel
+\definecolor [RAL1034] [h=EFA94A] % Pastellgelb Pastel yellow Jaune pastel Amarillo pastel Giallo pastello Pastelgeel
+\definecolor [RAL1035] [h=6A5D4D] % Perlbeige Pearl beige Beige nacré Beige perlado Beige perlato Parelmoergrijs
+\definecolor [RAL1036] [h=705335] % Perlgold Pearl gold Or nacré Oro perlado Oro perlato Parelmoergoud
+\definecolor [RAL1037] [h=F39F18] % Sonnengelb Sun yellow Jaune soleil Amarillo sol Giallo sole Zonnegeel
+\definecolor [RAL2000] [h=ED760E] % Gelborange Yellow orange Orangé jaune Amarillo naranja Arancio giallastro Geeloranje
+\definecolor [RAL2001] [h=C93C20] % Rotorange Red orange Orangé rouge Rojo anaranjado Arancio rossastro Roodoranje
+\definecolor [RAL2002] [h=CB2821] % Blutorange Vermilion Orangé sang Naranja sanguineo Arancio sanguigno Vermiljoen
+\definecolor [RAL2003] [h=FF7514] % Pastellorange Pastel orange Orangé pastel Naranja pálido Arancio pastello Pasteloranje
+\definecolor [RAL2004] [h=F44611] % Reinorange Pure orange Orangé pur Naranja puro Arancio puro Zuiver oranje
+\definecolor [RAL2005] [h=FF2301] % Leuchtorange Luminous orange Orangé brillant Naranja brillante Arancio brillante Briljant oranje
+\definecolor [RAL2007] [h=FFA420] % Leuchthellorange Luminous bright orange Orangé clair rillant Naranja claro brillante Arancio chiaro brillante Briljant lichtoranje
+\definecolor [RAL2008] [h=F75E25] % Hellrotorange Bright red orange Orangé rouge clair Rojo claro anaranjado Rosso arancio chiaro Licht roodoranje
+\definecolor [RAL2009] [h=F54021] % Verkehrsorange Traffic orange Orangé signalisation Naranja tráfico Arancio traffico Verkeersoranje
+\definecolor [RAL2010] [h=D84B20] % Signalorange Signal orange Orangé de sécurité Naranja señales Arancio segnale Signaaloranje
+\definecolor [RAL2011] [h=EC7C26] % Tieforange Deep orange Orangé foncé Naranja intenso Arancio profondo Dieporanje
+\definecolor [RAL2012] [h=E55137] % Lachsorange Salmon range Orangé saumon Naranja salmón Arancio salmone Zalmoranje
+\definecolor [RAL2013] [h=C35831] % Perlorange Pearl orange Orangé nacré Naranja perlado Arancio perlato Parelmoeroranje
+\definecolor [RAL3000] [h=AF2B1E] % Feuerrot Flame red Rouge feu Rojo vivo Rosso fuoco Vuurrood
+\definecolor [RAL3001] [h=A52019] % Signalrot Signal red Rouge de sécurité Rojo señales Rosso segnale Signaalrood
+\definecolor [RAL3002] [h=A2231D] % Karminrot Carmine red Rouge carmin Rojo carmin Rosso carminio Karmijnrood
+\definecolor [RAL3003] [h=9B111E] % Rubinrot Ruby red Rouge rubis Rojo rubí Rosso rubino Robijnrood
+\definecolor [RAL3004] [h=75151E] % Purpurrot Purple red Rouge pourpre Rojo purpura Rosso porpora Purperrood
+\definecolor [RAL3005] [h=5E2129] % Weinrot Wine red Rouge vin Rojo vino Rosso vino Wijnrood
+\definecolor [RAL3007] [h=412227] % Schwarzrot Black red Rouge noir Rojo negruzco Rosso nerastro Zwartrood
+\definecolor [RAL3009] [h=642424] % Oxidrot Oxide red Rouge oxyde Rojo óxido Rosso ossido Oxyderood
+\definecolor [RAL3011] [h=781F19] % Braunrot Brown red Rouge brun Rojo pardo Rosso marrone Bruinrood
+\definecolor [RAL3012] [h=C1876B] % Beigerot Beige red Rouge beige Rojo beige Rosso beige Beigerood
+\definecolor [RAL3013] [h=A12312] % Tomatenrot Tomato red Rouge tomate Rojo tomate Rosso pomodoro Tomaatrood
+\definecolor [RAL3014] [h=D36E70] % Altrosa Antique pink Vieux rose Rojo viejo Rosa antico Oudroze
+\definecolor [RAL3015] [h=EA899A] % Hellrosa Light pink Rose clair Rosa claro Rosa chiaro Lichtroze
+\definecolor [RAL3016] [h=B32821] % Korallenrot Coral red Rouge corail Rojo coral Rosso corallo Koraalrood
+\definecolor [RAL3017] [h=E63244] % Rosé Rose Rosé Rosa Rosato Bleekrood
+\definecolor [RAL3018] [h=D53032] % Erdbeerrot Strawberry red Rouge fraise Rojo fresa Rosso fragola Aardbeirood
+\definecolor [RAL3020] [h=CC0605] % Verkehrsrot Traffic red Rouge signalisation Rojo tráfico Rosso traffico Verkeersrood
+\definecolor [RAL3022] [h=D95030] % Lachsrot Salmon pink Rouge saumon Rojo salmón Rosso salmone Zalmrood
+\definecolor [RAL3024] [h=F80000] % Leuchtrot Luminous red Rouge brillant Rojo brillante Rosso brillante Briljantrood
+\definecolor [RAL3026] [h=FE0000] % Leuchthellrot Luminous bright red Rouge clair brillant Rojo claro brillante Rosso chiaro brillante
+\definecolor [RAL3027] [h=C51D34] % Himbeerrot Raspberry red Rouge framboise Rojo frambuesa Rosso lampone Framboosrood
+\definecolor [RAL3028] [h=CB3234] % Reinrot Pure red Rouge puro Rojo puro Rosso puro Zuiverrood
+\definecolor [RAL3031] [h=B32428] % Orientrot Orient red Rouge oriental Rojo oriente Rosso oriente Oriëntrood
+\definecolor [RAL3032] [h=721422] % Perlrubinrot Pearl ruby red Rouge rubis nacré Rojo rubí perlado Rosso rubino perlato Parelmoer donkerrood
+\definecolor [RAL3033] [h=B44C43] % Perlrosa Pearl pink Rose nacré Rosa perlado Rosa perlato Parelmoer lichtrood
+\definecolor [RAL4001] [h=6D3F5B] % Rotlila Red lilac Lilas rouge Rojo lila Lilla rossastro Roodlila
+\definecolor [RAL4002] [h=922B3E] % Rotviolett Red violet Violet rouge Rojo violeta Viola rossastro Roodpaars
+\definecolor [RAL4003] [h=DE4C8A] % Erikaviolett Heather violet Violet bruyère Violeta érica Viola erica Heidepaars
+\definecolor [RAL4004] [h=641C34] % Bordeauxviolett Claret violet Violet bordeaux Burdeos Viola bordeaux Bordeauxpaars
+\definecolor [RAL4005] [h=6C4675] % Blaulila Blue lilac Lilas bleu Lila azulado Lilla bluastro Blauwlila
+\definecolor [RAL4006] [h=A03472] % Verkehrspurpur Traffic purple Pourpre signalisation Púrpurá tráfico Porpora traffico Verkeerspurper
+\definecolor [RAL4007] [h=4A192C] % Purpurviolett Purple violet Violet pourpre Violeta púrpura Porpora violetto Purperviolet
+\definecolor [RAL4008] [h=924E7D] % Signalviolett Signal violet Violet de sécurité Violeta señales Violetto segnale Signaalviolet
+\definecolor [RAL4009] [h=A18594] % Pastellviolett Pastel violet Violet pastel Violeta pastel Violetto pastello Pastelviolet
+\definecolor [RAL4010] [h=CF3476] % Telemagenta Telemagenta Telemagenta Magenta tele Tele Magenta Telemagenta
+\definecolor [RAL4011] [h=8673A1] % Perlviolett Pearl violet Violet nacré Violeta perlado Violetto perlato Parelmoer donkerviolet
+\definecolor [RAL4012] [h=6C6874] % Perlbrombeer Pearl black berry Mûre nacré Morado perlado Mora perlato Parelmoer lichtviolet
+\definecolor [RAL5000] [h=354D73] % Violettblau Violet blue Bleu violet Azul violeta Blu violaceo Paarsblauw
+\definecolor [RAL5001] [h=1F3438] % Grünblau Green blue Bleu vert Azul verdoso Blu verdastro Groenblauw
+\definecolor [RAL5002] [h=20214F] % Ultramarinblau Ultramarine blue Bleu outremer Azul ultramar Blu oltremare Ultramarijnblauw
+\definecolor [RAL5003] [h=1D1E33] % Saphirblau Saphire blue Bleu saphir Azul zafiro Blu zaffiro Saffierblauw
+\definecolor [RAL5004] [h=18171C] % Schwarzblau Black blue Bleu noir Azul negruzco Blu nerastro Zwartblauw
+\definecolor [RAL5005] [h=1E2460] % Signalblau Signal blue Bleu de sécurité Azul señales Blu segnale Signaalblauw
+\definecolor [RAL5007] [h=3E5F8A] % Brillantblau Brillant blue Bleu brillant Azul brillante Blu brillante Briljantblauw
+\definecolor [RAL5008] [h=26252D] % Graublau Grey blue Bleu gris Azul grisáceo Blu grigiastro Grijsblauw
+\definecolor [RAL5009] [h=025669] % Azurblau Azure blue Bleu azur Azul azur Blu azzurro Azuurblauw
+\definecolor [RAL5010] [h=0E294B] % Enzianblau Gentian blue Bleu gentiane Azul genciana Blu genziana Gentiaanblauw
+\definecolor [RAL5011] [h=231A24] % Stahlblau Steel blue Bleu acier Azul acero Blu acciaio Staalblauw
+\definecolor [RAL5012] [h=3B83BD] % Lichtblau Light blue Bleu clair Azul luminoso Blu luce Lichtblauw
+\definecolor [RAL5013] [h=1E213D] % Kobaltblau Cobalt blue Bleu cobalt Azul cobalto Blu cobalto Kobaltblauw
+\definecolor [RAL5014] [h=606E8C] % Taubenblau Pigeon blue Bleu pigeon Azul olombino Blu colomba Duifblauw
+\definecolor [RAL5015] [h=2271B3] % Himmelblau Sky blue Bleu ciel Azul celeste Blu cielo Hemelsblauw
+\definecolor [RAL5017] [h=063971] % Verkehrsblau Traffic blue Bleu signalisation Azul tráfico Blu traffico Verkeersblauw
+\definecolor [RAL5018] [h=3F888F] % Türkisblau Turquoise blue Bleu turquoise Azul turquesa Blu turchese Turkooisblauw
+\definecolor [RAL5019] [h=1B5583] % Capriblau Capri blue Bleu capri Azul capri Blu capri Capriblauw
+\definecolor [RAL5020] [h=1D334A] % Ozeanblau Ocean blue Bleu océan Azul oceano Blu oceano Oceaanblauw
+\definecolor [RAL5021] [h=256D7B] % Wasserblau Water blue Bleu d’eau Azul agua Blu acqua Waterblauw
+\definecolor [RAL5022] [h=252850] % Nachtblau Night blue Bleu nocturne Azul noche Blu notte Nachtblauw
+\definecolor [RAL5023] [h=49678D] % Fernblau Distant blue Bleu distant Azul lejanía Blu distante Verblauw
+\definecolor [RAL5024] [h=5D9B9B] % Pastellblau Pastel blue Bleu pastel Azul pastel Blu pastello Pastelblauw
+\definecolor [RAL5025] [h=2A6478] % Perlenzian Pearl gentian blue Gentiane nacré Gencian perlado Blu genziana perlato Parelmoerblauw
+\definecolor [RAL5026] [h=102C54] % Perlnachtblau Pearl night blue Bleu nuit nacré Azul noche perlado Blu notte perlato Parelmoer nachtblauw
+\definecolor [RAL6000] [h=316650] % Patinagrün Patina green Vert patine Verde patina Verde patina Patinagroen
+\definecolor [RAL6001] [h=287233] % Smaragdgrün Emerald green Vert émeraude Verde esmeralda Verde smeraldo Smaragdgroen
+\definecolor [RAL6002] [h=2D572C] % Laubgrün Leaf green Vert feuillage Verde hoja Verde foglia Loofgroen
+\definecolor [RAL6003] [h=424632] % Olivgrün Olive green Vert olive Verde oliva Verde oliva Olijfgroen
+\definecolor [RAL6004] [h=1F3A3D] % Blaugrün Blue green Vert bleu Verde azulado Verde bluastro Blauwgroen
+\definecolor [RAL6005] [h=2F4538] % Moosgrün Moss green Vert mousse Verde musgo Verde muschio Mosgroen
+\definecolor [RAL6006] [h=3E3B32] % Grauoliv Grey olive Olive gris Oliva grisáceo Oliva grigiastro Grijs olijfgroen
+\definecolor [RAL6007] [h=343B29] % Flaschengrün Bottle green Vert bouteille Verde botella Verde bottiglia Flessegroen
+\definecolor [RAL6008] [h=39352A] % Braungrün Brown green Vert brun Verde parduzco Verde brunastro Bruingroen
+\definecolor [RAL6009] [h=31372B] % Tannengrün Fir green Vert sapin Verde abeto Verde abete Dennegroen
+\definecolor [RAL6010] [h=35682D] % Grasgrün Grass green Vert herbe Verde hierba Verde erba Grasgroen
+\definecolor [RAL6011] [h=587246] % Resedagrün Reseda green Vert réséda Verde reseda Verde reseda Resedagroen
+\definecolor [RAL6012] [h=343E40] % Schwarzgrün Black green Vert noir Verde negruzco Verde nerastro Zwartgroen
+\definecolor [RAL6013] [h=6C7156] % Schilfgrün Reed green Vert jonc Verde caña Verde canna Rietgroen
+\definecolor [RAL6014] [h=47402E] % Gelboliv Yellow olive Olive jaune Amarillo oliva Oliva giallastro Geel olijfgroen
+\definecolor [RAL6015] [h=3B3C36] % Schwarzoliv Black olive Olive noir Oliva negruzco Oliva nerastro Zwart olijfgroen
+\definecolor [RAL6016] [h=1E5945] % Türkisgrün Turquoise green Vert turquoise Verde turquesa Verde turchese Turkooisgroen
+\definecolor [RAL6017] [h=4C9141] % Maigrün May green Vert mai Verde mayo Verde maggio Meigroen
+\definecolor [RAL6018] [h=57A639] % Gelbgrün Yellow green Vert jaune Verde amarillento Verde giallastro Geelgroen
+\definecolor [RAL6019] [h=BDECB6] % Weißgrün Pastel green Vert blanc Verde lanquecino Verde biancastro Witgroen
+\definecolor [RAL6020] [h=2E3A23] % Chromoxidgrün Chrome green Vert oxyde chromique Verde cromo Verde cromo Chroomoxyde groen
+\definecolor [RAL6021] [h=89AC76] % Blassgrün Pale green Vert pâle Verde pálido Verde pallido Bleekgroen
+\definecolor [RAL6022] [h=25221B] % Braunoliv Olive drab Olive brun Oliva parduzco Oliva brunastro Bruin olijfgroen
+\definecolor [RAL6024] [h=308446] % Verkehrsgrün Traffic green Vert signalisation Verde tráfico Verde traffico Verkeersgroen
+\definecolor [RAL6025] [h=3D642D] % Farngrün Fern green Vert fougère Verde helecho Verde felce Varengroen
+\definecolor [RAL6026] [h=015D52] % Opalgrün Opal green Vert opale Verde opalo Verde opale Opaalgroen
+\definecolor [RAL6027] [h=84C3BE] % Lichtgrün Light green Vert clair Verde luminoso Verde chiaro Lichtgroen
+\definecolor [RAL6028] [h=2C5545] % Kieferngrün Pine green Vert pin Verde pino Verde pino Pijnboomgroen
+\definecolor [RAL6029] [h=20603D] % Minzgrün Mint green Vert menthe Verde menta Verde menta Mintgroen
+\definecolor [RAL6032] [h=317F43] % Signalgrün Signal green Vert de sécurité Verde señales Verde segnale Signaalgroen
+\definecolor [RAL6033] [h=497E76] % Minttürkis Mint turquoise Turquoise menthe Turquesa menta Turchese menta Mintturquoise
+\definecolor [RAL6034] [h=7FB5B5] % Pastelltürkis Pastel turquoise Turquoise pastel Turquesa pastel Turchese pastello Pastelturquoise
+\definecolor [RAL6035] [h=1C542D] % Perlgrün Pearl green Vert nacré Verde perlado Verde perlato Parelmoer donkergroen
+\definecolor [RAL6036] [h=193737] % Perlopalgrün Pearl opal green Vert opal nacré Verde ópalo perlado Verde opalo perlato Parelmoer lichtgroen
+\definecolor [RAL6037] [h=008F39] % Reingrün Pure green Vert pur Verde puro Verde puro Zuivergroen
+\definecolor [RAL6038] [h=00BB2D] % Leuchtgrün Luminous green Vert brillant Verde brillante Verde brillante Briljantgroen
+\definecolor [RAL7000] [h=78858B] % Fehgrau Squirrel grey Gris petit-gris Gris ardilla Grigio vaio Pelsgrijs
+\definecolor [RAL7001] [h=8A9597] % Silbergrau Silver grey Gris argent Gris plata Grigio argento Zilvergrijs
+\definecolor [RAL7002] [h=7E7B52] % Olivgrau Olive grey Gris olive Gris oliva Grigio olivastro Olijfgrijs
+\definecolor [RAL7003] [h=6C7059] % Moosgrau Moss grey Gris mousse Gris musgo Grigio muschio Mosgrijs
+\definecolor [RAL7004] [h=969992] % Signalgrau Signal grey Gris de sécurité Gris señales Grigio segnale Signaalgrijs
+\definecolor [RAL7005] [h=646B63] % Mausgrau Mouse grey Gris souris Gris ratón Grigio topo Muisgrijs
+\definecolor [RAL7006] [h=6D6552] % Beigegrau Beige grey Gris beige Gris beige Grigio beige Beigegrijs
+\definecolor [RAL7008] [h=6A5F31] % Khakigrau Khaki grey Gris kaki Gris caqui Grigio kaki Kakigrijs
+\definecolor [RAL7009] [h=4D5645] % Grüngrau Green grey Gris vert Gris verdoso Grigio verdastro Groengrijs
+\definecolor [RAL7010] [h=4C514A] % Zeltgrau Tarpaulin grey Gris tente Gris lona Grigio tenda Zeildoekgrijs
+\definecolor [RAL7011] [h=434B4D] % Eisengrau Iron grey Gris fer Gris hierro Grigio ferro IJzergrijs
+\definecolor [RAL7012] [h=4E5754] % Basaltgrau Basalt grey Gris basalte Gris basalto Grigio basalto Bazaltgrijs
+\definecolor [RAL7013] [h=464531] % Braungrau Brown grey Gris brun Gris parduzco Grigio brunastro Bruingrijs
+\definecolor [RAL7015] [h=434750] % Schiefergrau Slate grey Gris ardoise Gris pizarra Grigio ardesia Leigrijs
+\definecolor [RAL7016] [h=293133] % Anthrazitgrau Anthracite grey Gris anthracite Gris antracita Grigio antracite Antracietgrijs
+\definecolor [RAL7021] [h=23282B] % Schwarzgrau Black grey Gris noir Gris negruzco Grigio nerastro Zwartgrijs
+\definecolor [RAL7022] [h=332F2C] % Umbragrau Umbra grey Gris terre d’ombre Gris sombra Grigio ombra Ombergrijs
+\definecolor [RAL7023] [h=686C5E] % Betongrau Concrete grey Gris béton Gris hormigón Grigio calcestruzzo Betongrijs
+\definecolor [RAL7024] [h=474A51] % Graphitgrau Graphite grey Gris graphite Gris grafita Grigio grafite Grafietgrijs
+\definecolor [RAL7026] [h=2F353B] % Granitgrau Granite grey Gris granit Gris granito Grigio granito Granietgrijs
+\definecolor [RAL7030] [h=8B8C7A] % Steingrau Stone grey Gris pierre Gris piedra Grigio pietra Steengrijs
+\definecolor [RAL7031] [h=474B4E] % Blaugrau Blue grey Gris bleu Gris azulado Grigio bluastro Blauwgrijs
+\definecolor [RAL7032] [h=B8B799] % Kieselgrau Pebble grey Gris silex Gris guijarro Grigio ghiaia Kiezelgrijs
+\definecolor [RAL7033] [h=7D8471] % Zementgrau Cement grey Gris ciment Gris cemento Grigio cemento Cementgrijs
+\definecolor [RAL7034] [h=8F8B66] % Gelbgrau Yellow grey Gris jaune Gris amarillento Grigio giallastro Geelgrijs
+\definecolor [RAL7035] [h=D7D7D7] % Lichtgrau Light grey Gris clair Gris luminoso Grigio luce Lichtgrijs
+\definecolor [RAL7036] [h=7F7679] % Platingrau Platinum grey Gris platine Gris platino Grigio platino Platinagrijs
+\definecolor [RAL7037] [h=7D7F7D] % Staubgrau Dusty grey Gris poussière Gris polvo Grigio polvere Stofgrijs
+\definecolor [RAL7038] [h=B5B8B1] % Achatgrau Agate grey Gris agate Gris ágata Grigio agata Agaatgrijs
+\definecolor [RAL7039] [h=6C6960] % Quarzgrau Quartz grey Gris quartz Gris cuarzo Grigio quarzo Kwartsgrijs
+\definecolor [RAL7040] [h=9DA1AA] % Fenstergrau Window grey Gris fenêtre Gris ventana Grigio finestra Venstergrijs
+\definecolor [RAL7042] [h=8D948D] % Verkehrsgrau A Traffic grey A Gris signalisation A Gris tráfico A Grigio traffico A Verkeesgrijs A
+\definecolor [RAL7043] [h=4E5452] % Verkehrsgrau B Traffic grey B Gris signalisation B Gris tráfico B Grigio traffico B Verkeersgrijs B
+\definecolor [RAL7044] [h=CAC4B0] % Seidengrau Silk grey Gris soie Gris seda Grigio seta Zijdegrijs
+\definecolor [RAL7045] [h=909090] % Telegrau 1 Telegrey 1 Telegris 1 Gris tele 1 Tele grigio 1 Telegrijs 1
+\definecolor [RAL7046] [h=82898F] % Telegrau 2 Telegrey 2 Telegris 2 Gris tele 2 Tele grigio 2 Telegrijs 2
+\definecolor [RAL7047] [h=D0D0D0] % Telegrau 4 Telegrey 4 Telegris 4 Gris tele 4 Tele grigio 4 Telegrijs 4
+\definecolor [RAL7048] [h=898176] % Perlmausgrau Pearl mouse grey Gris souris nacré Gris musgo perlado Grigio topo perlato Parelmoer-muisgrijs
+\definecolor [RAL8000] [h=826C34] % Grünbraun Green brown Brun vert Pardo verdoso Marrone verdastro Groenbruin
+\definecolor [RAL8001] [h=955F20] % Ockerbraun Ochre brown Brun terre de Sienne Pardo ocre Marrone ocra Okerbruin
+\definecolor [RAL8002] [h=6C3B2A] % Signalbraun Signal brown Brun de sécurité Marrón señales Marrone segnale Signaalbruin
+\definecolor [RAL8003] [h=734222] % Lehmbraun Clay brown Brun argile Pardo arcilla Marrone fango Leembruin
+\definecolor [RAL8004] [h=8E402A] % Kupferbraun Copper brown Brun cuivré Pardo cobre Marrone rame Koperbruin
+\definecolor [RAL8007] [h=59351F] % Rehbraun Fawn brown Brun fauve Pardo corzo Marrone capriolo Reebruin
+\definecolor [RAL8008] [h=6F4F28] % Olivbraun Olive brown Brun olive Pardo oliva Marrone oliva Olijfbruin
+\definecolor [RAL8011] [h=5B3A29] % Nussbraun Nut brown Brun noisette Pardo nuez Marrone noce Notebruin
+\definecolor [RAL8012] [h=592321] % Rotbraun Red brown Brun rouge Pardo rojo Marrone rossiccio Roodbruin
+\definecolor [RAL8014] [h=382C1E] % Sepiabraun Sepia brown Brun sépia Sepia Marrone seppia Sepiabruin
+\definecolor [RAL8015] [h=633A34] % Kastanienbraun Chestnut brown Marron Castaño Marrone castagna Kastanjebruin
+\definecolor [RAL8016] [h=4C2F27] % Mahagonibraun Mahogany brown Brun acajou Caoba Marrone mogano Mahoniebruin
+\definecolor [RAL8017] [h=45322E] % Schokoladenbraun Chocolate brown Brun chocolat Chocolate Marrone cioccolata Chocoladebruin
+\definecolor [RAL8019] [h=403A3A] % Graubraun Grey brown Brun gris Pardo grisáceo Marrone grigiastro Grijsbruin
+\definecolor [RAL8022] [h=212121] % Schwarzbraun Black brown Brun noir Pardo negruzco Marrone nerastro Zwartbruin
+\definecolor [RAL8023] [h=A65E2E] % Orangebraun Orange brown Brun orangé Pardo anaranjado Marrone arancio Oranjebruin
+\definecolor [RAL8024] [h=79553D] % Beigebraun Beige brown Brun beige Pardo beige Marrone beige Beigebruin
+\definecolor [RAL8025] [h=755C48] % Blassbraun Pale brown Brun pâle Pardo pálido Marrone pallido Bleekbruin
+\definecolor [RAL8028] [h=4E3B31] % Terrabraun Terra brown Brun terre Marrón tierra Marrone terra Terrabruin
+\definecolor [RAL8029] [h=763C28] % Perlkupfer Pearl copper Cuivre nacré Cobre perlado Rame perlato Parelmoerkoper
+\definecolor [RAL9001] [h=FDF4E3] % Cremeweiß Cream Blanc crème Blanco crema Bianco crema Crèmewit
+\definecolor [RAL9002] [h=E7EBDA] % Grauweiß Grey white Blanc gris Blanco grisáceo Bianco grigiastro Grijswit
+\definecolor [RAL9003] [h=F4F4F4] % Signalweiß Signal white Blanc de sécurité Blanco señales Bianco segnale Signaalwit
+\definecolor [RAL9004] [h=282828] % Signalschwarz Signal black Noir de sécurité Negro señales Nero segnale Signaalzwart
+\definecolor [RAL9005] [h=0A0A0A] % Tiefschwarz Jet black Noir foncé Negro intenso Nero intenso Gitzwart
+\definecolor [RAL9006] [h=A5A5A5] % Weißaluminium White aluminium Aluminium blanc Aluminio blanco Aluminio brillante Blank aluminiumkleurig
+\definecolor [RAL9007] [h=8F8F8F] % Graualuminium Grey aluminium Aluminium gris Aluminio gris Aluminio grigiastro Grijs aluminiumkleurig
+\definecolor [RAL9010] [h=FFFFFF] % Reinweiß Pure white Blanc pur Blanco puro Bianco puro Zuiverwit
+\definecolor [RAL9011] [h=1C1C1C] % Graphitschwarz Graphite black Noir graphite Negro grafito Nero grafite Grafietzwart
+\definecolor [RAL9016] [h=F6F6F6] % Verkehrsweiß Traffic white Blanc signalisation Blanco tráfico Bianco traffico Verkeerswit
+\definecolor [RAL9017] [h=1E1E1E] % Verkehrsschwarz Traffic black Noir signalisation Negro tráfico Nero traffico Verkeerszwart
+\definecolor [RAL9018] [h=D7D7D7] % Papyrusweiß Papyrus white Blanc papyrus Blanco papiro Bianco papiro Papyruswit
+\definecolor [RAL9022] [h=9C9C9C] % Perlhellgrau Pearl light grey Gris clair nacré Gris claro perlado Grigio chiaro perlato Parelmoer lichtgrijs
+\definecolor [RAL9023] [h=828282] % Perldunkelgrau Pearl dark grey Gris fonçé nacré Gris oscuro perlado Grigio scuro perlato Parelmoer donkergrijs
+
+\stopprotectedcolors
+
+\endinput
+
+
diff --git a/tex/context/base/mkiv/colo-imp-x11.mkiv b/tex/context/base/mkiv/colo-imp-x11.mkiv
index a83466e8d..98a71354d 100644
--- a/tex/context/base/mkiv/colo-imp-x11.mkiv
+++ b/tex/context/base/mkiv/colo-imp-x11.mkiv
@@ -9,7 +9,8 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-%D Standard X11 rgb colors (from \type {/usr/share/X11/rgb.txt}):
+%D Standard X11 rgb colors (from, e.g. \type {/usr/share/X11/rgb.txt}).
+%D Note that we have dropped the \quote{grey} spelling variants.
\startprotectedcolors
@@ -45,7 +46,7 @@
\definecolor [slategray] [h=708090]
\definecolor [lightslategray] [h=778899]
\definecolor [gray] [s=0.75]
-\definecolor [lightgrey] [s=0.83]
+\definecolor [lightgray] [s=0.83]
\definecolor [midnightblue] [h=191970]
\definecolor [navy] [h=000080]
\definecolor [navyblue] [h=000080]
@@ -457,13 +458,15 @@
\definecolor [thistle3] [h=cdb5cd]
\definecolor [thistle4] [h=8b7b8b]
-% A lot of useless grays:
+% A lot of useless grays (since one can always specify \color[s=.XX]:
-\dorecurse{100}{
+\dostepwiserecurse{0}{100}{1}{
\definecolor [gray#1] [s=\cldcontext{#1/100}]
}
-\definecolor [darkgrey] [s=0.66]
+% These were missing in the original specification, but were added later:
+
+\definecolor [darkgray] [s=0.66]
\definecolor [darkblue] [h=00008b]
\definecolor [darkcyan] [h=008b8b]
\definecolor [darkmagenta] [h=8b008b]
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 8135b5c92..8fe6401f1 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2016.03.26 13:51}
+\newcontextversion{2016.03.30 11:59}
%D This file is loaded at runtime, thereby providing an excellent place for
%D hacks, patches, extensions and new features.
diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv
index 0920795ee..50f23ec32 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -39,7 +39,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2016.03.26 13:51}
+\edef\contextversion{2016.03.30 11:59}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/font-ini.mkvi b/tex/context/base/mkiv/font-ini.mkvi
index ee146c1a5..9ed4a0efc 100644
--- a/tex/context/base/mkiv/font-ini.mkvi
+++ b/tex/context/base/mkiv/font-ini.mkvi
@@ -1650,9 +1650,15 @@
\fi
\fi}
+% \def\font_helpers_define_unknown_check_sizes#body#relativesize%
+% {\ifcsname\??fontenvironments\s!default#relativesize\endcsname % fontclass ?
+% % how \lastnamedcs here
+% \expandafter\normalizebodyfontsize\csname\??fontenvironments#body#relativesize\endcsname{\csname\??fontenvironments\s!default#relativesize\endcsname\dimexpr#body\relax}%
+% \settrue\c_font_defining_state
+% \fi}
+
\def\font_helpers_define_unknown_check_sizes#body#relativesize%
{\ifcsname\??fontenvironments\s!default#relativesize\endcsname % fontclass ?
- % how \lastnamedcs here
\expandafter\normalizebodyfontsize\csname\??fontenvironments#body#relativesize\endcsname{\csname\??fontenvironments\s!default#relativesize\endcsname\dimexpr#body\relax}%
\settrue\c_font_defining_state
\fi}
@@ -1665,9 +1671,15 @@
\settrue\c_font_defining_state
\fi}
+% \def\font_helpers_define_unknown_check_relatives#body#relativesize%
+% {\ifcsname\??fontbodyknown\csname\??fontenvironments#body#relativesize\endcsname\endcsname \else
+% % how \lastnamedcs here
+% \expandafter\font_helpers_define_unknown_font\csname\??fontenvironments#body#relativesize\endcsname
+% \settrue\c_font_defining_state
+% \fi}
+
\def\font_helpers_define_unknown_check_relatives#body#relativesize%
{\ifcsname\??fontbodyknown\csname\??fontenvironments#body#relativesize\endcsname\endcsname \else
- % how \lastnamedcs here
\expandafter\font_helpers_define_unknown_font\csname\??fontenvironments#body#relativesize\endcsname
\settrue\c_font_defining_state
\fi}
@@ -1683,6 +1695,20 @@
%D These macros show that quite some definitions take place. Fonts are not loaded
%D yet! This means that at format generation time, no font files are present.
+% \unexpanded\def\font_basics_switch_points#body%
+% {\ifcsname\??fontbodyknown#body\endcsname \else
+% % we need to check the relative sizes for this body
+% \font_helpers_define_unknown_font{#body}%
+% \fi%
+% \ifcsname\??fontbodyknown#body\endcsname % always true now
+% \font_basics_complete_switch{#body}%
+% \localbodyfontsize#body\relax
+% \normalizebodyfontsize\normalizedbodyfontsize\localbodyfontsize
+% \font_helpers_check_bodyfont_environment\normalizedbodyfontsize\normalizedbodyfontsize % !!
+% \else
+% \showmessage\m!fonts4{#body}%
+% \fi}
+
\unexpanded\def\font_basics_switch_points#body%
{\ifcsname\??fontbodyknown#body\endcsname \else
% we need to check the relative sizes for this body
diff --git a/tex/context/base/mkiv/font-mps.lua b/tex/context/base/mkiv/font-mps.lua
index 7529f2c5f..7b7c859df 100644
--- a/tex/context/base/mkiv/font-mps.lua
+++ b/tex/context/base/mkiv/font-mps.lua
@@ -339,17 +339,16 @@ function fonts.metapost.boxtomp(n,kind)
end
advance = advance + kern
elseif id == glue_code then
- local spec = current.spec
- local width = spec.width
+ local width = current.width
if glue_sign == 1 then
- if spec.stretch_order == glue_order then
- width = (width + spec.stretch * glue_set) * fc
+ if current.stretch_order == glue_order then
+ width = (width + current.stretch * glue_set) * fc
else
width = width * fc
end
elseif glue_sign == 2 then
- if spec.shrink_order == glue_order then
- width = (width - spec.shrink * glue_set) * fc
+ if current.shrink_order == glue_order then
+ width = (width - current.shrink * glue_set) * fc
else
width = width * fc
end
@@ -404,7 +403,7 @@ function fonts.metapost.boxtomp(n,kind)
distance = distance - current.kern
advance = 0
elseif id == glue_code then
- distance = distance - current.spec.width
+ distance = distance - current.width
advance = 0
elseif id == rule_code then
local wd = current.width
diff --git a/tex/context/base/mkiv/lpdf-tag.lua b/tex/context/base/mkiv/lpdf-tag.lua
index f20e4bfe8..79b8ac368 100644
--- a/tex/context/base/mkiv/lpdf-tag.lua
+++ b/tex/context/base/mkiv/lpdf-tag.lua
@@ -70,7 +70,6 @@ local setlist = nuts.setlist
local traverse_nodes = nuts.traverse
local tosequence = nuts.tosequence
-local copy_node = nuts.copy
local slide_nodelist = nuts.slide
local insert_before = nuts.insert_before
local insert_after = nuts.insert_after
diff --git a/tex/context/base/mkiv/node-acc.lua b/tex/context/base/mkiv/node-acc.lua
index 31359d936..ed34dbec9 100644
--- a/tex/context/base/mkiv/node-acc.lua
+++ b/tex/context/base/mkiv/node-acc.lua
@@ -34,8 +34,6 @@ local copy_node = nuts.copy
local free_nodelist = nuts.flush_list
local insert_after = nuts.insert_after
-local new_gluespec = nuts.pool.gluespec -- temp hack
-
local glue_code = nodecodes.glue
local kern_code = nodecodes.kern
local glyph_code = nodecodes.glyph
diff --git a/tex/context/base/mkiv/node-ltp.lua b/tex/context/base/mkiv/node-ltp.lua
index 95efbcb9c..380b94e64 100644
--- a/tex/context/base/mkiv/node-ltp.lua
+++ b/tex/context/base/mkiv/node-ltp.lua
@@ -785,11 +785,10 @@ local function compute_break_width(par,break_type,p) -- split in two
if id == glyph_code then
return -- happens often
elseif id == glue_code then
- local spec = getfield(p,"spec")
- local order = stretch_orders[getfield(spec,"stretch_order")]
- break_width.size = break_width.size - getfield(spec,"width")
- break_width[order] = break_width[order] - getfield(spec,"stretch")
- break_width.shrink = break_width.shrink - getfield(spec,"shrink")
+ local order = stretch_orders[getfield(p,"stretch_order")]
+ break_width.size = break_width.size - getfield(p,"width")
+ break_width[order] = break_width[order] - getfield(p,"stretch")
+ break_width.shrink = break_width.shrink - getfield(p,"shrink")
elseif id == penalty_code then
-- do nothing
elseif id == kern_code then
@@ -815,13 +814,6 @@ local function append_to_vlist(par, b)
if getid(b) == hlist_code then
local d = getfield(par.baseline_skip,"width") - prev_depth - getfield(b,"height") -- deficiency of space between baselines
local s = d < par.line_skip_limit and new_lineskip(par.lineskip) or new_baselineskip(d)
- -- local s = d < par.line_skip_limit
- -- if s then
- -- s = new_lineskip()
- -- setfield(s,"spec",tex.lineskip)
- -- else
- -- s = new_baselineskip(d)
- -- end
local head_field = par.head_field
if head_field then
local n = slide_nodelist(head_field) -- todo: find_tail
@@ -1464,11 +1456,8 @@ local function wrap_up(par)
par.do_last_line_fit = false
else
local glue = par.final_par_glue
- local spec = copy_node(getfield(glue,"spec"))
- setfield(spec,"width",getfield(spec,"width") + active_short - active_glue)
- setfield(spec,"stretch",0)
- -- flush_node(getfield(glue,"spec")) -- brrr, when we do this we can get an "invalid id stretch message", maybe dec refcount
- setfield(glue,"spec",spec)
+ setfield(glue,"width",getfield(glue,"width") + active_short - active_glue)
+ setfield(glue,"stretch",0)
if trace_lastlinefit then
report_parbuilders("applying last line fit, short %a, glue %p",active_short,active_glue)
end
@@ -2231,12 +2220,11 @@ function constructors.methods.basic(head,d)
end
end
end
- local spec = check_shrinkage(par,getfield(current,"spec"))
- local order = stretch_orders[getfield(spec,"stretch_order")]
- setfield(current,"spec",spec)
- active_width.size = active_width.size + getfield(spec,"width")
- active_width[order] = active_width[order] + getfield(spec,"stretch")
- active_width.shrink = active_width.shrink + getfield(spec,"shrink")
+ check_shrinkage(par,current)
+ local order = stretch_orders[getfield(current,"stretch_order")]
+ active_width.size = active_width.size + getfield(current,"width")
+ active_width[order] = active_width[order] + getfield(current,"stretch")
+ active_width.shrink = active_width.shrink + getfield(current,"shrink")
elseif id == disc_code then
local subtype = getsubtype(current)
if subtype ~= second_disc_code then
@@ -2481,9 +2469,7 @@ local function short_display(target,a,font_in_short_display)
elseif id == rule_code then
write(target,"|")
elseif id == glue_code then
- if getfield(getfield(a,"spec"),"writable") then
- write(target," ")
- end
+ write(target," ")
elseif id == kern_code then
local s = getsubtype(a)
if s == userkern_code or s == italickern_code or getattr(a,a_fontkern) then
@@ -2883,12 +2869,11 @@ local function hpack(head,width,method,direction,firstline,line) -- fast version
end
end
elseif id == glue_code then
- local spec = getfield(current,"spec")
- natural = natural + getfield(spec,"width")
- local op = getfield(spec,"stretch_order")
- local om = getfield(spec,"shrink_order")
- total_stretch[op] = total_stretch[op] + getfield(spec,"stretch")
- total_shrink [om] = total_shrink [om] + getfield(spec,"shrink")
+ natural = natural + getfield(current,"width")
+ local op = getfield(current,"stretch_order")
+ local om = getfield(current,"shrink_order")
+ total_stretch[op] = total_stretch[op] + getfield(current,"stretch")
+ total_shrink [om] = total_shrink [om] + getfield(current,"shrink")
if getsubtype(current) >= leaders_code then
local leader = getleader(current)
local ht = getfield(leader,"height")
diff --git a/tex/context/base/mkiv/node-met.lua b/tex/context/base/mkiv/node-met.lua
index a5ad15c80..a2398da90 100644
--- a/tex/context/base/mkiv/node-met.lua
+++ b/tex/context/base/mkiv/node-met.lua
@@ -338,60 +338,10 @@ and hide it for the user. And yes, LuaTeX now gives a warning as
well.</p>
]]--
--- writable will go away
-
-function nodes.writable_spec(n) -- not pool
- local spec = n_getfield(n,"spec")
- if not spec then
- spec = n_copy_node(glue_spec)
- n_setfield(n,"spec",spec)
- elseif not n_getfield(spec,"writable") then
- spec = n_copy_node(spec)
- n_setfield(n,"spec",spec)
- end
- return spec
-end
-
-function nodes.copy_spec(old,free) -- also frees
- if not old then
- return n_new_node("glue_spec")
- else
- local new = n_copy_node(old)
- if free and old.writable then
- free_node(old)
- end
- return new
- end
-end
-
-function nodes.free_spec(old)
- if not old then
- -- skip
- elseif old.writable then
- free_node(old)
- else
- -- skip
- end
-end
-
--- if gonuts then
-
function nodes.reference(n)
return n and tonut(n) or "<none>"
end
--- else
---
--- local left, space = lpeg.P("<"), lpeg.P(" ")
---
--- local reference = left * (1-left)^0 * left * space^0 * lpeg.C((1-space)^0)
---
--- function nodes.reference(n)
--- return n and lpegmatch(reference,tostring(n)) or "<none>"
--- end
---
--- end
-
-- Here starts an experiment with metatables. Of course this only works with nodes
-- wrapped in userdata with a metatable.
--
diff --git a/tex/context/base/mkiv/node-nut.lua b/tex/context/base/mkiv/node-nut.lua
index 200cbce5b..6fe2e0f33 100644
--- a/tex/context/base/mkiv/node-nut.lua
+++ b/tex/context/base/mkiv/node-nut.lua
@@ -200,30 +200,6 @@ nuts.ligaturing = direct.ligaturing
nuts.kerning = direct.kerning
nuts.effective_glue = direct.effective_glue
-if not nuts.effective_glue then
-
- local getfield = nuts.getfield
-
- function nuts.effective_glue(glue,parent)
- local spec = getfield(glue,"spec")
- local width = getfield(spec,"width")
- if parent then
- local sign = getfield(parent,"glue_sign")
- if sign == 1 then
- if getfield(spec,"stretch_order") == getfield(parent,"glue_order") then
- return width + getfield(spec,"stretch") * getfield(parent,"glue_set")
- end
- elseif sign == 2 then
- if getfield(spec,"shrink_order") == getfield(parent,"glue_order") then
- return width - getfield(spec,"shrink") * getfield(parent,"glue_set")
- end
- end
- end
- return width
- end
-
-end
-
-- placeholders
if not nuts.kerning then
@@ -347,7 +323,7 @@ local d_find_tail = direct.tail
local d_insert_after = direct.insert_after
local d_insert_before = direct.insert_before
local d_slide = direct.slide
-local d_copy_node = direct.copy
+----- d_copy_node = direct.copy
local d_traverse = direct.traverse
local d_setlink = direct.setlink
local d_setboth = direct.setboth
@@ -464,18 +440,6 @@ function nuts.concat(list) -- consider tail instead of slide
return head, tail
end
-function nuts.writable_spec(n) -- not pool
- local spec = d_getfield(n,"spec")
- if not spec then
- spec = d_copy_node(glue_spec)
- d_setfield(n,"spec",spec)
- elseif not d_getfield(spec,"writable") then
- spec = d_copy_node(spec)
- d_setfield(n,"spec",spec)
- end
- return spec
-end
-
function nuts.reference(n)
return n or "<none>"
end
diff --git a/tex/context/base/mkiv/node-res.lua b/tex/context/base/mkiv/node-res.lua
index 5bc414b68..b74929a81 100644
--- a/tex/context/base/mkiv/node-res.lua
+++ b/tex/context/base/mkiv/node-res.lua
@@ -59,28 +59,45 @@ setmetatable(userids, {
-- nuts overload
-local nuts = nodes.nuts
-local nutpool = { }
-nuts.pool = nutpool
+local nuts = nodes.nuts
+local nutpool = { }
+nuts.pool = nutpool
-local tonut = nuts.tonut
-local tonode = nuts.tonode
+local tonut = nuts.tonut
+local tonode = nuts.tonode
-local getbox = nuts.getbox
-local getfield = nuts.getfield
-local getid = nuts.getid
-local getlist = nuts.getlist
+local getbox = nuts.getbox
+local getfield = nuts.getfield
+local getid = nuts.getid
+local getlist = nuts.getlist
-local setfield = nuts.setfield
-local setchar = nuts.setchar
-local setlist = nuts.setlist
+local setfield = nuts.setfield
+local setchar = nuts.setchar
+local setlist = nuts.setlist
-local copy_nut = nuts.copy
-local new_nut = nuts.new
-local free_nut = nuts.free
+local copy_nut = nuts.copy
+local new_nut = nuts.new
+local free_nut = nuts.free
-local copy_node = nodes.copy
-local new_node = nodes.new
+local copy_node = nodes.copy
+local new_node = nodes.new
+
+local reset_glue = nuts.reset_glue
+
+if not reset_glue then
+ reset_glue = function(n,width,stretch,shrink,stretch_order,shrink_order)
+ setfield(n,"width",width or 0)
+ setfield(n,"stretch",stretch or 0)
+ setfield(n,"shrink",shrink or 0)
+ setfield(n,"stretch_order",stretch_order or 0)
+ setfield(n,"shrink_order",shrink_order or 0)
+ end
+ nuts.reset_glue = reset_glue
+end
+
+nuts.resetglue = reset_glue
+
+-- todo: nodes.reset_glue
-- at some point we could have a dual set (the overhead of tonut is not much larger than
-- metatable associations at the lua/c end esp if we also take assignments into account
@@ -237,58 +254,45 @@ end
local function someskip(skip,width,stretch,shrink,stretch_order,shrink_order)
local n = copy_nut(skip)
- if not width then
- -- no spec
- elseif width == false or tonumber(width) then
- local s = copy_nut(glue_spec)
- if width and width ~= 0 then
- setfield(s,"width",width)
- end
- if stretch and stretch ~= 0 then
- setfield(s,"stretch",stretch)
- end
- if shrink and shrink ~= 0 then
- setfield(s,"shrink",shrink)
- end
- if stretch_order and stretch_order ~= 0 then
- setfield(s,"stretch_order",stretch_order)
- end
- if shrink_order and shrink_order ~= 0 then
- setfield(s,"shrink_order",shrink_order)
- end
- setfield(n,"spec",s)
- else
- -- shared
- setfield(n,"spec",copy_nut(width))
+ if width and width ~= 0 then
+ setfield(n,"width",width)
+ end
+ if stretch and stretch ~= 0 then
+ setfield(n,"stretch",stretch)
+ end
+ if shrink and shrink ~= 0 then
+ setfield(n,"shrink",shrink)
+ end
+ if stretch_order and stretch_order ~= 0 then
+ setfield(n,"stretch_order",stretch_order)
+ end
+ if shrink_order and shrink_order ~= 0 then
+ setfield(n,"shrink_order",shrink_order)
end
return n
end
function nutpool.stretch(a,b)
local n = copy_nut(glue)
- local s = copy_nut(glue_spec)
if b then
- setfield(s,"stretch",a)
- setfield(s,"stretch_order",b)
+ setfield(n,"stretch",a)
+ setfield(n,"stretch_order",b)
else
- setfield(s,"stretch",1)
- setfield(s,"stretch_order",a or 1)
+ setfield(n,"stretch",1)
+ setfield(n,"stretch_order",a or 1)
end
- setfield(n,"spec",s)
return n
end
function nutpool.shrink(a,b)
local n = copy_nut(glue)
- local s = copy_nut(glue_spec)
if b then
- setfield(s,"shrink",a)
- setfield(s,"shrink_order",b)
+ setfield(n,"shrink",a)
+ setfield(n,"shrink_order",b)
else
- setfield(s,"shrink",1)
- setfield(s,"shrink_order",a or 1)
+ setfield(n,"shrink",1)
+ setfield(n,"shrink_order",a or 1)
end
- setfield(n,"spec",s)
return n
end
@@ -298,20 +302,18 @@ end
function nutpool.negatedglue(glue)
local n = copy_nut(glue)
- local s = copy_nut(getfield(n,"spec"))
- local width = getfield(s,"width")
- local stretch = getfield(s,"stretch")
- local shrink = getfield(s,"shrink")
+ local width = getfield(n,"width")
+ local stretch = getfield(n,"stretch")
+ local shrink = getfield(n,"shrink")
if width and width ~= 0 then
- setfield(s,"width", -width)
+ setfield(n,"width", -width)
end
if stretch and stretch ~= 0 then
- setfield(s,"stretch",-stretch)
+ setfield(n,"stretch",-stretch)
end
if shrink and shrink ~= 0 then
- setfield(s,"shrink", -shrink)
+ setfield(n,"shrink", -shrink)
end
- setfield(n,"spec",s)
return n
end
diff --git a/tex/context/base/mkiv/node-ser.lua b/tex/context/base/mkiv/node-ser.lua
index 99d26b63b..2ad1242c5 100644
--- a/tex/context/base/mkiv/node-ser.lua
+++ b/tex/context/base/mkiv/node-ser.lua
@@ -43,7 +43,6 @@ local expand = allocate ( tohash {
"list", -- list_ptr & ins_ptr & adjust_ptr
"pre", --
"post", --
- "spec", -- glue_ptr
"top_skip", --
"attr", --
"replace", -- nobreak
diff --git a/tex/context/base/mkiv/node-tra.lua b/tex/context/base/mkiv/node-tra.lua
index eb1832947..d184620ef 100644
--- a/tex/context/base/mkiv/node-tra.lua
+++ b/tex/context/base/mkiv/node-tra.lua
@@ -382,11 +382,7 @@ local function nodetodimen(n)
else
return f_z_z(width)
end
- end
- if id == glue_code then
- n = getfield(n,"spec")
- end
- if not n or not getid(n) == gluespec_code then
+ elseif id ~= glue_code then
return "0pt"
end
local stretch_order = getfield(n,"stretch_order")
diff --git a/tex/context/base/mkiv/page-flt.lua b/tex/context/base/mkiv/page-flt.lua
index c57715fd9..caa8d490d 100644
--- a/tex/context/base/mkiv/page-flt.lua
+++ b/tex/context/base/mkiv/page-flt.lua
@@ -21,9 +21,7 @@ local C, S, P, lpegmatch = lpeg.C, lpeg.S, lpeg.P, lpeg.match
-- we use floatbox, floatwidth, floatheight
-- text page leftpage rightpage (todo: top, bottom, margin, order)
-local copy_node_list = node.copy_list
local flush_node_list = node.flush_list
-local copy_node = node.copy
local setdimen = tex.setdimen
local setcount = tex.setcount
diff --git a/tex/context/base/mkiv/scrn-ref.mkvi b/tex/context/base/mkiv/scrn-ref.mkvi
index a52133306..c165e9131 100644
--- a/tex/context/base/mkiv/scrn-ref.mkvi
+++ b/tex/context/base/mkiv/scrn-ref.mkvi
@@ -36,7 +36,8 @@
\c!click=\v!yes,
\c!display=\v!normal,
\c!focus=\v!fit,
- \c!focusoffset=\zeropoint, % when tested with al views it will become 5\points
+ %\c!focusoffset=\zeropoint, % when tested with al views it will become 5\points
+ \c!focusoffset=5\points,
\c!calculate=,
% rendering:
\c!width=\emwidth,
diff --git a/tex/context/base/mkiv/scrp-ini.lua b/tex/context/base/mkiv/scrp-ini.lua
index c35f99038..02b289137 100644
--- a/tex/context/base/mkiv/scrp-ini.lua
+++ b/tex/context/base/mkiv/scrp-ini.lua
@@ -69,7 +69,6 @@ local nodepool = nuts.pool
local new_glue = nodepool.glue
local new_rule = nodepool.rule
local new_penalty = nodepool.penalty
------ new_gluespec = nodepool.gluespec
scripts = scripts or { }
local scripts = scripts
@@ -823,20 +822,6 @@ local function marker(head,current,font,color) -- could become: nodes.tracers.ma
return head, current
end
--- local function process(handler,head,first,last)
--- dataset = numbertodataset[first[a_scriptsplitting]]
--- stretch = emwidths[first.font]*dataset.inter_word_stretch_factor
--- return insert_node_after(head,last,new_glue(0,stretch))
--- end
---
--- local cache = { } table.setmetatableindex(cache,function(t,k)
--- local v = new_gluespec(0,k)
--- nodepool.register(v)
--- t[k] = v
--- return v
--- end)
--- return insert_node_after(head,last,new_glue(cache[last_s]))
-
local last_a, last_f, last_s, last_q
function splitters.insertafter(handler,head,first,last,detail)
diff --git a/tex/context/base/mkiv/spac-prf.lua b/tex/context/base/mkiv/spac-prf.lua
index fd4ddea61..3bfd89f2e 100644
--- a/tex/context/base/mkiv/spac-prf.lua
+++ b/tex/context/base/mkiv/spac-prf.lua
@@ -71,6 +71,7 @@ local new_kern = nuts.pool.kern
local hpack_nodes = nuts.hpack
local link_nodes = nuts.link
local find_node_tail = nuts.tail
+local reset_glue = nuts.reset_glue
local properties = nodes.properties.data
@@ -719,7 +720,7 @@ local function profilelist(line,mvl)
if action then
local ok = action(top,bot,t_profile,b_profile,specification)
if ok and lastglue and distance ~= 0 then
- setfield(lastglue,"spec",nil)
+ resetglue(lastglue)
end
end
t_profile.done = true
@@ -825,7 +826,7 @@ function profiling.profilebox(specification)
if action then
local ok = action(top,bot,t_profile,b_profile,specification)
if ok and lastglue and distance ~= 0 then
- setfield(lastglue,"spec",nil)
+ reset_glue(lastglue)
end
end
t_profile.done = true
diff --git a/tex/context/base/mkiv/spac-ver.lua b/tex/context/base/mkiv/spac-ver.lua
index 5d040db6f..637e469f3 100644
--- a/tex/context/base/mkiv/spac-ver.lua
+++ b/tex/context/base/mkiv/spac-ver.lua
@@ -101,7 +101,6 @@ local getbox = nuts.getbox
local find_node_tail = nuts.tail
local free_node = nuts.free
local free_node_list = nuts.flush_list
-local copy_node = nuts.copy
local traverse_nodes = nuts.traverse
local traverse_nodes_id = nuts.traverse_id
local insert_node_before = nuts.insert_before
@@ -123,7 +122,6 @@ local nodepool = nuts.pool
local new_penalty = nodepool.penalty
local new_kern = nodepool.kern
local new_rule = nodepool.rule
-local new_gluespec = nodepool.gluespec
local nodecodes = nodes.nodecodes
local skipcodes = nodes.skipcodes
@@ -594,17 +592,6 @@ local function snap_hlist(where,current,method,height,depth) -- method.strut is
return h, d, ch, cd, lines
end
--- local function snap_topskip(current,method)
--- local spec = getfield(current,"spec")
--- local w = w and getfield(spec,"width") or 0
--- local wd = w
--- if getfield(spec,"writable") then
--- setfield(spec,"width",0)
--- wd = 0
--- end
--- return w, wd
--- end
-
local function snap_topskip(current,method)
local w = getfield(current,"width") or 0
setfield(current,"width",0)
@@ -1254,6 +1241,8 @@ end
-- topskip
-- splittopskip
+local experiment = false directives.register("vspacing.experiment",function(v) experiment = v end)
+
local function collapser(head,where,what,trace,snap,a_snapmethod) -- maybe also pass tail
if trace then
reset_tracing(head)
@@ -1310,14 +1299,6 @@ local function collapser(head,where,what,trace,snap,a_snapmethod) -- maybe also
head = forced_skip(head,current,getfield(glue_data,"width") or 0,"before",trace)
free_node(glue_data)
else
- --
- -- local spec = getfield(glue_data,"spec")
- -- if getfield(spec,"writable") then
- -- if trace then trace_done("flushed due to " .. why,glue_data) end
- -- head = insert_node_before(head,current,glue_data)
- -- else
- -- free_node(glue_data)
- -- end
local w = getfield(glue_data,"width")
if w ~= 0 then
if trace then trace_done("flushed due to non zero " .. why,glue_data) end
@@ -1507,16 +1488,31 @@ local function collapser(head,where,what,trace,snap,a_snapmethod) -- maybe also
end
glue_order, glue_data = 0, nil
elseif sc == disable then
+local next = getnext(current)
+if not experiment or next then
ignore_following = true
if trace then trace_skip("disable",sc,so,sp,current) end
head, current = remove_node(head, current, true)
+else
+ current = next
+end
elseif sc == together then
+local next = getnext(current)
+if not experiment or next then
keep_together = true
if trace then trace_skip("together",sc,so,sp,current) end
head, current = remove_node(head, current, true)
+else
+ current = next
+end
elseif sc == nowhite then
+local next = getnext(current)
+if not experiment or next then
ignore_whitespace = true
head, current = remove_node(head, current, true)
+else
+ current = next
+end
elseif sc == discard then
if trace then trace_skip("discard",sc,so,sp,current) end
head, current = remove_node(head, current, true)
@@ -1728,6 +1724,7 @@ local function collapser(head,where,what,trace,snap,a_snapmethod) -- maybe also
if force_glue then
head, tail = forced_skip(head,tail,getfield(glue_data,"width") or 0,"after",trace)
free_node(glue_data)
+ glue_data = nil
else
head, tail = insert_node_after(head,tail,glue_data)
end
@@ -1764,8 +1761,12 @@ end
local stackhead, stacktail, stackhack = nil, nil, false
-local function report(message,lst)
- report_vspacing(message,count_nodes(lst,true),nodeidstostring(lst))
+local function report(message,where,lst)
+ if lst and where then
+ report_vspacing(message,where,count_nodes(lst,true),nodeidstostring(lst))
+ else
+ report_vspacing(message,count_nodes(lst,true),nodeidstostring(lst))
+ end
end
-- ugly code: we get partial lists (check if this stack is still okay) ... and we run
@@ -1795,27 +1796,27 @@ function vspacing.pagehandler(newhead,where)
end
if flush then
if stackhead then
- if trace_collect_vspacing then report("appending %s nodes to stack (final): %s",newhead) end
+ if trace_collect_vspacing then report("%s > appending %s nodes to stack (final): %s",where,newhead) end
setlink(stacktail,newhead)
newhead = stackhead
stackhead, stacktail = nil, nil
end
if stackhack then
stackhack = false
- if trace_collect_vspacing then report("processing %s nodes: %s",newhead) end
+ if trace_collect_vspacing then report("%s > processing %s nodes: %s",where,newhead) end
-- texlists.contrib_head = collapser(newhead,"page",where,trace_page_vspacing,true,a_snapmethod)
newhead = collapser(newhead,"page",where,trace_page_vspacing,true,a_snapmethod)
else
- if trace_collect_vspacing then report("flushing %s nodes: %s",newhead) end
+ if trace_collect_vspacing then report("%s > flushing %s nodes: %s",where,newhead) end
-- texlists.contrib_head = newhead
end
return tonode(newhead)
else
if stackhead then
- if trace_collect_vspacing then report("appending %s nodes to stack (intermediate): %s",newhead) end
+ if trace_collect_vspacing then report("%s > appending %s nodes to stack (intermediate): %s",where,newhead) end
setlink(stacktail,newhead)
else
- if trace_collect_vspacing then report("storing %s nodes in stack (initial): %s",newhead) end
+ if trace_collect_vspacing then report("%s > storing %s nodes in stack (initial): %s",where,newhead) end
stackhead = newhead
end
stacktail = newtail
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index c6983c64a..0af031181 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index ae503f08a..11167c0ca 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/typo-cap.lua b/tex/context/base/mkiv/typo-cap.lua
index ec6326042..62b90b8ab 100644
--- a/tex/context/base/mkiv/typo-cap.lua
+++ b/tex/context/base/mkiv/typo-cap.lua
@@ -10,8 +10,8 @@ local next, type = next, type
local format, insert = string.format, table.insert
local div, randomnumber = math.div, math.random
-local trace_casing = false trackers.register("typesetters.casing", function(v) trace_casing = v end)
-local check_kerns = false directives.register("typesetters.casing.checkkerns", function(v) check_kerns = v end)
+local trace_casing = false trackers .register("typesetters.casing", function(v) trace_casing = v end)
+local check_kerns = true directives.register("typesetters.casing.checkkerns", function(v) check_kerns = v end)
local report_casing = logs.reporter("typesetting","casing")
diff --git a/tex/context/base/mkiv/typo-dua.lua b/tex/context/base/mkiv/typo-dua.lua
index 867d7f04c..ec2777919 100644
--- a/tex/context/base/mkiv/typo-dua.lua
+++ b/tex/context/base/mkiv/typo-dua.lua
@@ -84,7 +84,6 @@ local setprop = nuts.setprop
local setchar = nuts.setchar
local remove_node = nuts.remove
-local copy_node = nuts.copy
local insert_node_after = nuts.insert_after
local insert_node_before = nuts.insert_before
diff --git a/tex/context/base/mkiv/typo-dub.lua b/tex/context/base/mkiv/typo-dub.lua
index e6a092568..d5188f535 100644
--- a/tex/context/base/mkiv/typo-dub.lua
+++ b/tex/context/base/mkiv/typo-dub.lua
@@ -73,7 +73,6 @@ local setprop = nuts.setprop
local setchar = nuts.setchar
local remove_node = nuts.remove
-local copy_node = nuts.copy
local insert_node_after = nuts.insert_after
local insert_node_before = nuts.insert_before
diff --git a/tex/context/base/mkiv/typo-krn.lua b/tex/context/base/mkiv/typo-krn.lua
index a245fec41..bb9061c56 100644
--- a/tex/context/base/mkiv/typo-krn.lua
+++ b/tex/context/base/mkiv/typo-krn.lua
@@ -50,7 +50,8 @@ local setsubtype = nuts.setsubtype
local texsetattribute = tex.setattribute
local unsetvalue = attributes.unsetvalue
-local new_gluespec = nodepool.gluespec
+local resetglue = nuts.resetglue
+
local new_kern = nodepool.kern
local new_glue = nodepool.glue
@@ -209,16 +210,6 @@ local function kern_injector(fillup,kern)
end
end
-local function spec_injector(fillup,width,stretch,shrink)
- if fillup then
- local s = new_gluespec(width,2*stretch,2*shrink)
- setfield(s,"stretch_order",1)
- return s
- else
- return new_gluespec(width,stretch,shrink)
- end
-end
-
-- a simple list injector, no components and such .. just disable ligatures in
-- kern mode .. maybe not even hyphenate ... anyway, the next one is for simple
-- sublists .. beware: we can have char -1
@@ -560,10 +551,19 @@ function kerns.handler(head)
if subtype == userskip_code or subtype == xspaceskip_code or subtype == spaceskip_code then
local w = getfield(start,"width")
if w > 0 then
- local width = w+gluefactor*w*krn
- local stretch = getfield(start,"stretch")
- local shrink = getfield(start,"shrink")
- setfield(start,"spec",spec_injector(fillup,width,stretch*width/w,shrink*width/w))
+ local width = w + gluefactor * w * krn
+ local stretch = getfield(start,"stretch") * width / w
+ local shrink = getfield(start,"shrink") * width / w
+ setfield(start,"width",width)
+ if fillup then
+ stretch = 2 * stretch
+ shrink = 2 * shrink
+ setfield(start,"stretch_order",1)
+ -- shrink_order ?
+ end
+ setfield(start,"stretch",stretch)
+ setfield(start,"shrink", shrink)
+ --
done = true
end
end
diff --git a/tex/context/base/mkiv/typo-tal.lua b/tex/context/base/mkiv/typo-tal.lua
index c7efc0f28..f76a69a26 100644
--- a/tex/context/base/mkiv/typo-tal.lua
+++ b/tex/context/base/mkiv/typo-tal.lua
@@ -54,10 +54,10 @@ local insert_node_after = nuts.insert_after
local traverse_list_by_id = nuts.traverse_id
local dimensions_of_list = nuts.dimensions
local first_glyph = nuts.first_glyph
+local reset_glue = nuts.reset_glue
local nodepool = nuts.pool
local new_kern = nodepool.kern
-local new_gluespec = nodepool.gluespec
local tracers = nodes.tracers
local setcolor = tracers.colors.set
@@ -260,7 +260,7 @@ function characteralign.handler(originalhead,where)
local prev = getprev(current)
if next and prev and getid(next) == glyph_code and getid(prev) == glyph_code then -- too much checking
local width = fontcharacters[getfont(b_start)][separator or period].width
- setfield(current,"spec",new_gluespec(width))
+ reset_glue(current,width)
setattr(current,a_character,punctuationspace)
if a_start then
a_stop = current
diff --git a/tex/context/modules/mkiv/m-nodechart.lua b/tex/context/modules/mkiv/m-nodechart.lua
index 4f2740ef4..da80faed9 100644
--- a/tex/context/modules/mkiv/m-nodechart.lua
+++ b/tex/context/modules/mkiv/m-nodechart.lua
@@ -49,9 +49,7 @@ end
-- subtype width leader spec (stretch shrink ...
function formatters.glue(n,comment)
- local s = n.spec
- -- return format("\\doFLOWgluenode{%s}{%s}{%s}{%s}{%s}",comment,gluecodes[n.subtype],points(s.width),points(s.stretch),points(s.shrink))
- return format("\\doFLOWgluenode{%s}{%s}{%.4f}{%.4f}{%.4f}",comment,gluecodes[n.subtype],s.width*ptfactor,s.stretch*ptfactor,s.shrink*ptfactor)
+ return format("\\doFLOWgluenode{%s}{%s}{%.4f}{%.4f}{%.4f}",comment,gluecodes[n.subtype],n.width*ptfactor,n.stretch*ptfactor,n.shrink*ptfactor)
end
-- subtype width leader spec (stretch shrink ...
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index cd7a88469..c1d06ea0e 100644
--- a/tex/generic/context/luatex/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua
-- parent file : c:/data/develop/context/sources/luatex-fonts.lua
--- merge date : 03/26/16 13:51:14
+-- merge date : 03/30/16 11:59:12
do -- begin closure to overcome local limits and interference