diff options
author | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-03-30 12:07:47 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-03-30 12:07:47 +0200 |
commit | ed2c824995ef51ddb1dfc1fa2a526933cd377cda (patch) | |
tree | d70dbfc0cfe6b33c0b87c662d259e5fc53cb9afd | |
parent | f025339d0770904176dd9b32a405b23f809772ae (diff) | |
download | context-ed2c824995ef51ddb1dfc1fa2a526933cd377cda.tar.gz |
2016-03-30 12:01:00
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 Binary files differindex 81a7c42b9..760995ea8 100644 --- a/doc/context/documents/general/manuals/luatex.pdf +++ b/doc/context/documents/general/manuals/luatex.pdf 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 Binary files differindex ad9e2f68e..fb8f7e3eb 100644 --- a/tex/context/base/context-version.pdf +++ b/tex/context/base/context-version.pdf 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 Binary files differindex c6983c64a..0af031181 100644 --- a/tex/context/base/mkiv/status-files.pdf +++ b/tex/context/base/mkiv/status-files.pdf diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf Binary files differindex ae503f08a..11167c0ca 100644 --- a/tex/context/base/mkiv/status-lua.pdf +++ b/tex/context/base/mkiv/status-lua.pdf 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 |