summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2019-02-07 19:16:06 +0100
committerContext Git Mirror Bot <phg@phi-gamma.net>2019-02-07 19:16:06 +0100
commit99dc1cd9bb77ac9fa68b0584f58f57749994fdba (patch)
treeab184c40b11270cec9c311beb0e190913471e47f
parent38a9804bf0448f3c987903d2601175f1750e9fe3 (diff)
downloadcontext-99dc1cd9bb77ac9fa68b0584f58f57749994fdba.tar.gz
2019-02-07 18:55:00
-rw-r--r--doc/context/documents/general/qrcs/setup-cs.pdfbin857595 -> 857706 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-de.pdfbin858099 -> 858102 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-en.pdfbin864662 -> 864764 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-fr.pdfbin856255 -> 856240 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-it.pdfbin861441 -> 861626 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-cs.pdfbin348080 -> 348189 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-de.pdfbin432576 -> 432604 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-en.pdfbin345884 -> 345979 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-fr.pdfbin348782 -> 348767 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-it.pdfbin347190 -> 347388 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-nl.pdfbin346594 -> 346734 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-ro.pdfbin509899 -> 510100 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-nl.pdfbin851296 -> 851417 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-ro.pdfbin855459 -> 855627 bytes
-rw-r--r--doc/context/scripts/mkiv/mtx-metatex.html49
-rw-r--r--doc/context/scripts/mkiv/mtx-metatex.man30
-rw-r--r--doc/context/scripts/mkiv/mtx-metatex.xml16
-rw-r--r--scripts/context/lua/mtx-context.lua22
-rw-r--r--scripts/context/lua/mtx-metatex.lua80
-rw-r--r--scripts/context/lua/mtxrun.lua7
-rw-r--r--scripts/context/perl/mptopdf.pl24
-rw-r--r--scripts/context/stubs/mswin/metatex.exebin4608 -> 0 bytes
-rw-r--r--scripts/context/stubs/mswin/mtxrun.lua7
-rw-r--r--scripts/context/stubs/unix/metatex2
-rw-r--r--scripts/context/stubs/unix/mtxrun7
-rw-r--r--scripts/context/stubs/win64/metatex.exebin15360 -> 0 bytes
-rw-r--r--scripts/context/stubs/win64/mtxrun.lua7
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-rw-r--r--tex/context/base/mkii/mult-it.mkii1
-rw-r--r--tex/context/base/mkiv/cldf-ini.lua26
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/cont-run.lua2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/font-con.lua22
-rw-r--r--tex/context/base/mkiv/font-nod.lua3
-rw-r--r--tex/context/base/mkiv/lpdf-ini.lua4
-rw-r--r--tex/context/base/mkiv/lpdf-nod.lua129
-rw-r--r--tex/context/base/mkiv/luat-cod.lua4
-rw-r--r--tex/context/base/mkiv/luat-ini.lua2
-rw-r--r--tex/context/base/mkiv/luat-run.lua66
-rw-r--r--tex/context/base/mkiv/metatex.tex30
-rw-r--r--tex/context/base/mkiv/mult-def.lua3
-rw-r--r--tex/context/base/mkiv/node-ini.lua28
-rw-r--r--tex/context/base/mkiv/node-nut.lua12
-rw-r--r--tex/context/base/mkiv/node-res.lua24
-rw-r--r--tex/context/base/mkiv/page-run.mkiv1
-rw-r--r--tex/context/base/mkiv/spac-ver.mkiv6
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin26072 -> 26075 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin269360 -> 269440 bytes
-rw-r--r--tex/context/base/mkiv/syst-rtp.mkiv (renamed from tex/context/base/mkii/syst-rtp.mkiv)0
-rw-r--r--tex/context/base/mkiv/typo-dha.lua2
-rw-r--r--tex/context/base/mkiv/typo-dir.mkiv10
-rw-r--r--tex/context/base/mkiv/typo-dua.lua74
-rw-r--r--tex/context/base/mkiv/typo-dub.lua201
-rw-r--r--tex/context/base/mkiv/typo-duc.lua59
-rw-r--r--tex/context/base/mkiv/util-str.lua13
-rw-r--r--tex/context/interface/mkii/keys-it.xml1
-rw-r--r--tex/context/interface/mkiv/context-en.xml5
-rw-r--r--tex/context/interface/mkiv/i-columns.xml6
-rw-r--r--tex/context/interface/mkiv/i-context.pdfbin864662 -> 864764 bytes
-rw-r--r--tex/context/interface/mkiv/i-grid.xml3
-rw-r--r--tex/context/interface/mkiv/i-readme.pdfbin60777 -> 60778 bytes
-rw-r--r--tex/generic/context/luatex/luatex-basics-nod.lua7
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua27
65 files changed, 451 insertions, 579 deletions
diff --git a/doc/context/documents/general/qrcs/setup-cs.pdf b/doc/context/documents/general/qrcs/setup-cs.pdf
index 125bc4860..34095bc2b 100644
--- a/doc/context/documents/general/qrcs/setup-cs.pdf
+++ b/doc/context/documents/general/qrcs/setup-cs.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-de.pdf b/doc/context/documents/general/qrcs/setup-de.pdf
index b5daae4ce..7364fd510 100644
--- a/doc/context/documents/general/qrcs/setup-de.pdf
+++ b/doc/context/documents/general/qrcs/setup-de.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-en.pdf b/doc/context/documents/general/qrcs/setup-en.pdf
index 2996163ad..d181f8a6b 100644
--- a/doc/context/documents/general/qrcs/setup-en.pdf
+++ b/doc/context/documents/general/qrcs/setup-en.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-fr.pdf b/doc/context/documents/general/qrcs/setup-fr.pdf
index b9fad2956..b79665e11 100644
--- a/doc/context/documents/general/qrcs/setup-fr.pdf
+++ b/doc/context/documents/general/qrcs/setup-fr.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-it.pdf b/doc/context/documents/general/qrcs/setup-it.pdf
index e98bd3bf3..275cac71b 100644
--- a/doc/context/documents/general/qrcs/setup-it.pdf
+++ b/doc/context/documents/general/qrcs/setup-it.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf
index 0be1d5a5b..158c2ad93 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-de.pdf b/doc/context/documents/general/qrcs/setup-mapping-de.pdf
index 4ba5c438c..7dc2304f8 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-de.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-de.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-en.pdf b/doc/context/documents/general/qrcs/setup-mapping-en.pdf
index 6a4515ee9..8e4963bea 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-en.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-en.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf
index 4c2b0fdc2..3b4c660d8 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-it.pdf b/doc/context/documents/general/qrcs/setup-mapping-it.pdf
index c1a121911..80b7d1577 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-it.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-it.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf
index 99ad616a7..7bbca0dcf 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf
index abd9db9ed..a5fcad6a0 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-nl.pdf b/doc/context/documents/general/qrcs/setup-nl.pdf
index 368a7a81c..13ac8fc9f 100644
--- a/doc/context/documents/general/qrcs/setup-nl.pdf
+++ b/doc/context/documents/general/qrcs/setup-nl.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-ro.pdf b/doc/context/documents/general/qrcs/setup-ro.pdf
index 756d6355a..9fc77c777 100644
--- a/doc/context/documents/general/qrcs/setup-ro.pdf
+++ b/doc/context/documents/general/qrcs/setup-ro.pdf
Binary files differ
diff --git a/doc/context/scripts/mkiv/mtx-metatex.html b/doc/context/scripts/mkiv/mtx-metatex.html
deleted file mode 100644
index 18866c0d0..000000000
--- a/doc/context/scripts/mkiv/mtx-metatex.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<!-- compare with lmx framework variant -->
-
-<!--
- filename : context-base.xml
- comment : companion to mtx-server-ctx-startup.tex
- author : Hans Hagen, PRAGMA-ADE, Hasselt NL
- copyright: PRAGMA ADE / ConTeXt Development Team
- license : see context related readme files
--->
-
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
- <head>
- <title>MetaTeX Process Management 0.10</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <style type="text/css">
- body { color: #FFFFFF; background-color: #808080; font-family: optima, verdana, futura, "lucida sans", arial, geneva, helvetica, sans; font-size: 12px; line-height: 18px; } a:link, a:active, a:visited { color: #FFFFFF; } a.dir-view:link, a.dir-view:active, a.dir-view:visited { color: #FFFFFF; text-decoration: underline; } .valid { color: #00FF00; } .invalid { color: #FF0000; } .invisible { visibility: hidden; } button, .commonlink, .smallbutton { font-weight: bold; font-size: 12px; text-decoration: none; color: #000000; border-color: #7F7F7F; border-style: solid; border-width: .125ex; background-color: #FFFFFF; padding: .5ex; } .smallbutton { width: 1em; } a.commonlink:link, a.commonlink:active, a.commonlink:visited, a.smalllink:link, a.smalllink:active, a.smalllink:visited { font-weight: bold; font-size: 12px; text-decoration: none; color: #000000; } h1, .title { font-style: normal; font-weight: normal; font-size: 18px; line-height: 18px; margin-bottom: 20px; } h2, .subtitle { font-style: normal; font-weight: normal; font-size: 12px; margin-top: 18px; margin-bottom: 18px; } table { line-height: 18px; font-size: 12px; margin: 0; } th { font-weight: bold; text-align: left; padding-bottom: 6px; } .tc { font-weight: bold; text-align: left; } p, li { max-width: 60em; } .empty-line { margin-top: 4px; } .more-room { margin-right: 1.5em; } .much-more-room { margin-right: 3em; } #main { position: absolute; left: 10%; top: 10%; right: 10%; bottom: 10%; z-index: 2; width: 80%; height: 80%; padding: 0%; margin: 0%; overflow: auto; border-style: none; border-width: 0; background-color: #3F3F3F; } #main-settings { margin: 12px; x_max-width: 60em; line-height: 18px; font-size: 12px; } #left { position: absolute; top : 10%; left: 0%; bottom: 0%; right: 90%; z-index: 1; width: 10%; height: 90%; padding: 0%; margin: 0%; font-size: 16px; border-style: none; border-width: 0; background-color: #4F6F6F; } #right { position: absolute; top : 0%; left: 90%; bottom: 10%; right: 0%; z-index: 1; width: 10%; height: 90%; padding: 0%; margin: 0%; font-size: 16px; border-style: none; border-width: 0; background-color: #4F6F6F; _margin-left: -15px; } #bottom { position: absolute; left: 10%; right: 0%; top: 90%; bottom: 0%; z-index: 1; width: 90%; height: 10%; padding: 0%; margin: 0%; font-size: 16px; border-style: none; border-width: 0; background-color: #6F6F8F; } #top { position: absolute; left: 0%; right: 10%; top: 0%; bottom: 90%; z-index: 1; width: 90%; height: 10%; padding: 0%; margin: 0%; font-size: 16px; border-style: none; border-width: 0; background-color: #6F6F8F; } #top-one { position: absolute; bottom: 50%; width: 100%; buggedheight: 100%; } #top-two { position: relative; margin-bottom: -9px; margin-left: 12px; margin-right: 12px; line-height: 18px; text-align: right; vertical-align: middle; } #bottom-one { position: absolute; bottom: 50%; width: 100%; buggedheight: 100%; } #bottom-two { position: relative; margin-bottom: -9px; margin-left: 12px; margin-right: 12px; line-height: 18px; text-align: left; vertical-align: middle; } #left-one { position: absolute; width: 100%; buggedheight: 100%; } #left-two { position: relative; margin-top: 12px; line-height: 18px; text-align: center; vertical-align: top; } #right-one { display: table; height: 100%; width: 100%; } #right-two { display: table-row; height: 100%; width: 100%; } #right-three { display: table-cell; width: 100%; vertical-align: bottom; _position: absolute; _top: 100%; } #right-four { text-align: center; margin-bottom: 2ex; _position: relative; _top: -100%; } #more-top { position: absolute; top: 0%; left: 90%; bottom: 90%; right: 0%; z-index: 3; width: 10%; height: 10%; padding: 0%; margin: 0%; border-style: none; border-width: 0; } #more-top-settings { text-align: center; } #more-right-settings { margin-right: 12px; margin-left: 12px; line-height: 18px; font-size: 10px; text-align: center; } #right-safari { _display: table; width: 100%; height: 100%; }
- </style>
- <style type="text/css">
- </style>
- </head>
- <body>
- <div id="top"> <div id="top-one">
- <div id="top-two">MetaTeX Process Management 0.10 </div>
- </div>
- </div>
- <div id="bottom"> <div id="bottom-one">
- <div id="bottom-two">wiki: http://contextgarden.net | mail: ntg-context@ntg.nl | website: http://www.pragma-ade.nl</div>
- </div>
- </div>
- <div id="left"></div>
- <div id="right"></div>
- <div id="main">
- <div id='main-settings'>
- <h1>Command line options</h1>
-<table>
- <tr><th style="width: 10em">flag</th><th style="width: 8em">value</th><th>description</th></tr>
- <tr><th/><td/><td/></tr>
- <tr><th>--run</th><td></td><td>process (one or more) files (default action)</td></tr>
- <tr><th>--make</th><td></td><td>create metatex format(s)</td></tr>
- </table>
-<br/>
- </div>
- </div>
- </body>
-</html>
diff --git a/doc/context/scripts/mkiv/mtx-metatex.man b/doc/context/scripts/mkiv/mtx-metatex.man
deleted file mode 100644
index d98207ba8..000000000
--- a/doc/context/scripts/mkiv/mtx-metatex.man
+++ /dev/null
@@ -1,30 +0,0 @@
-.TH "mtx-metatex" "1" "01-01-2019" "version 0.10" "MetaTeX Process Management"
-.SH NAME
-.B mtx-metatex
-.SH SYNOPSIS
-.B mtxrun --script metatex [
-.I OPTIONS ...
-.B ] [
-.I FILENAMES
-.B ]
-.SH DESCRIPTION
-.B MetaTeX Process Management
-.SH OPTIONS
-.TP
-.B --run
-process (one or more) files (default action)
-.TP
-.B --make
-create metatex format(s)
-.SH AUTHOR
-More information about ConTeXt and the tools that come with it can be found at:
-
-
-.B "maillist:"
-ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
-
-.B "webpage:"
-http://www.pragma-ade.nl / http://tex.aanhet.net
-
-.B "wiki:"
-http://contextgarden.net
diff --git a/doc/context/scripts/mkiv/mtx-metatex.xml b/doc/context/scripts/mkiv/mtx-metatex.xml
deleted file mode 100644
index 649673fbf..000000000
--- a/doc/context/scripts/mkiv/mtx-metatex.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0"?>
-<application>
- <metadata>
- <entry name="name">mtx-metatex</entry>
- <entry name="detail">MetaTeX Process Management</entry>
- <entry name="version">0.10</entry>
- </metadata>
- <flags>
- <category name="basic">
- <subcategory>
- <flag name="run"><short>process (one or more) files (default action)</short></flag>
- <flag name="make"><short>create metatex format(s)</short></flag>
- </subcategory>
- </category>
- </flags>
-</application>
diff --git a/scripts/context/lua/mtx-context.lua b/scripts/context/lua/mtx-context.lua
index 2d93b8094..c50c4a77a 100644
--- a/scripts/context/lua/mtx-context.lua
+++ b/scripts/context/lua/mtx-context.lua
@@ -103,17 +103,17 @@ end
-- -- The way we use stubs will change in a bit in 2019 (mtxrun and context). We also normalize
-- -- the platforms to use a similar approach to this.
---
--- local engine_new = file.nameonly(getargument("engine") or directives.value("system.engine"))
--- local engine_old = file.nameonly(environment.ownbin)
---
--- local function restart(engine_old,engine_new)
--- local command = format("%s --luaonly %q %s --redirected",engine_new,environment.ownname,environment.reconstructcommandline())
--- report(format("redirect %s -> %s: %s",engine_old,engine_new,command))
--- local result = os.execute(command)
--- os.exit(result == 0 and 0 or 1)
--- end
---
+
+local engine_new = file.nameonly(getargument("engine") or directives.value("system.engine"))
+local engine_old = file.nameonly(environment.ownbin)
+
+local function restart(engine_old,engine_new)
+ local command = format("%s --luaonly %q %s --redirected",engine_new,environment.ownname,environment.reconstructcommandline())
+ report(format("redirect %s -> %s: %s",engine_old,engine_new,command))
+ local result = os.execute(command)
+ os.exit(result == 0 and 0 or 1)
+end
+
-- if getargument("redirected") then
-- setargument("engine",engine_old) -- later on we need this
-- elseif engine_new == engine_old then
diff --git a/scripts/context/lua/mtx-metatex.lua b/scripts/context/lua/mtx-metatex.lua
deleted file mode 100644
index 455ecbd52..000000000
--- a/scripts/context/lua/mtx-metatex.lua
+++ /dev/null
@@ -1,80 +0,0 @@
-if not modules then modules = { } end modules ['mtx-metatex'] = {
- version = 1.001,
- comment = "companion to mtxrun.lua",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files"
-}
-
--- future versions will deal with specific variants of metatex
-
-local helpinfo = [[
-<?xml version="1.0"?>
-<application>
- <metadata>
- <entry name="name">mtx-metatex</entry>
- <entry name="detail">MetaTeX Process Management</entry>
- <entry name="version">0.10</entry>
- </metadata>
- <flags>
- <category name="basic">
- <subcategory>
- <flag name="run"><short>process (one or more) files (default action)</short></flag>
- <flag name="make"><short>create metatex format(s)</short></flag>
- </subcategory>
- </category>
- </flags>
-</application>
-]]
-
-local application = logs.application {
- name = "mtx-metatex",
- banner = "MetaTeX Process Management 0.10",
- helpinfo = helpinfo,
-}
-
-local report = application.report
-
-scripts = scripts or { }
-scripts.metatex = scripts.metatex or { }
-
--- metatex
-
-function scripts.metatex.make()
- environment.make_format("metatex")
-end
-
-function scripts.metatex.run(ctxdata,filename)
- local filename = environment.files[1] or ""
- if filename ~= "" then
- local formatfile, scriptfile = resolvers.locateformat("metatex")
- if formatfile and scriptfile then
- local command = string.format("luatex --fmt=%s --lua=%s %s",
- string.quote(formatfile), string.quote(scriptfile), string.quote(filename))
- report("running command: %s",command)
- os.spawn(command)
- elseif formatname then
- report("error, no format found with name: %s",formatname)
- else
- report("error, no format found (provide formatname or interface)")
- end
- end
-end
-
-function scripts.metatex.timed(action)
- statistics.timed(action)
-end
-
-if environment.argument("run") then
- scripts.metatex.timed(scripts.metatex.run)
-elseif environment.argument("make") then
- scripts.metatex.timed(scripts.metatex.make)
-elseif environment.argument("help") then
- logs.help(messages.help,false)
-elseif environment.argument("exporthelp") then
- application.export(environment.argument("exporthelp"),environment.files[1])
-elseif environment.files[1] then
- scripts.metatex.timed(scripts.metatex.run)
-else
- application.help()
-end
diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua
index 8f8448c85..55bfdef41 100644
--- a/scripts/context/lua/mtxrun.lua
+++ b/scripts/context/lua/mtxrun.lua
@@ -6310,7 +6310,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["util-str"] = package.loaded["util-str"] or true
--- original size: 43101, stripped down to: 21622
+-- original size: 43539, stripped down to: 21641
if not modules then modules={} end modules ['util-str']={
version=1.001,
@@ -6667,6 +6667,7 @@ local environment={
formattedfloat=number.formattedfloat,
stripzero=lpeg.patterns.stripzero,
stripzeros=lpeg.patterns.stripzeros,
+ FORMAT=string.f9,
}
local arguments={ "a1" }
setmetatable(arguments,{ __index=function(t,k)
@@ -24754,8 +24755,8 @@ end -- of closure
-- used libraries : l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua util-lib.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 989156
--- stripped bytes : 393037
+-- original bytes : 989594
+-- stripped bytes : 393456
-- end library merge
diff --git a/scripts/context/perl/mptopdf.pl b/scripts/context/perl/mptopdf.pl
index 42db9001e..165d4d217 100644
--- a/scripts/context/perl/mptopdf.pl
+++ b/scripts/context/perl/mptopdf.pl
@@ -118,9 +118,14 @@ if (($pattern eq '')||($Help)) {
@files = glob "$pattern" ;
}
+# this patch was send via debian but is not tested by me
+
foreach my $file (@files) {
$_ = $file ;
- if (s/\.(\d+|mps)$// && -e $file) {
+ # if (s/\.(\d+|mps)$// && -e $file) {
+ if (s/\.(\d+|mps|ps)$// && -e $file) {
+ my $suffix = $1 ;
+ my $pdf = basename($_).".pdf" ;
if ($miktex) {
$command = "pdftex -undump=mptopdf" ;
} else {
@@ -136,15 +141,22 @@ foreach my $file (@files) {
print "\n$program : error while processing tex file\n" ;
exit 1 ;
}
- my $pdfsrc = basename($_).".pdf";
- rename ($pdfsrc, "$_-$1.pdf") ;
- if (-e $pdfsrc) {
- CopyFile ($pdfsrc, "$_-$1.pdf") ;
+ # my $pdfsrc = basename($_).".pdf";
+ # rename ($pdfsrc, "$_-$1.pdf") ;
+ # if (-e $pdfsrc) {
+ # CopyFile ($pdfsrc, "$_-$1.pdf") ;
+ if ($suffix =~ m/\.\d+$/) {
+ rename ($pdf, "$_-$suffix.pdf") ;
+ if (-e $pdf) {
+ CopyFile ($pdf, "$_-$suffix.pdf") ;
+ }
+ $pdf = "$_-$suffix.pdf" ;
}
if ($done) {
$report .= " +" ;
}
- $report .= " $_-$1.pdf" ;
+ # $report .= " $_-$1.pdf" ;
+ $report .= " $pdf" ;
++$done ;
}
}
diff --git a/scripts/context/stubs/mswin/metatex.exe b/scripts/context/stubs/mswin/metatex.exe
deleted file mode 100644
index 0e7882cf9..000000000
--- a/scripts/context/stubs/mswin/metatex.exe
+++ /dev/null
Binary files differ
diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua
index 8f8448c85..55bfdef41 100644
--- a/scripts/context/stubs/mswin/mtxrun.lua
+++ b/scripts/context/stubs/mswin/mtxrun.lua
@@ -6310,7 +6310,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["util-str"] = package.loaded["util-str"] or true
--- original size: 43101, stripped down to: 21622
+-- original size: 43539, stripped down to: 21641
if not modules then modules={} end modules ['util-str']={
version=1.001,
@@ -6667,6 +6667,7 @@ local environment={
formattedfloat=number.formattedfloat,
stripzero=lpeg.patterns.stripzero,
stripzeros=lpeg.patterns.stripzeros,
+ FORMAT=string.f9,
}
local arguments={ "a1" }
setmetatable(arguments,{ __index=function(t,k)
@@ -24754,8 +24755,8 @@ end -- of closure
-- used libraries : l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua util-lib.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 989156
--- stripped bytes : 393037
+-- original bytes : 989594
+-- stripped bytes : 393456
-- end library merge
diff --git a/scripts/context/stubs/unix/metatex b/scripts/context/stubs/unix/metatex
deleted file mode 100644
index f0c6b65d4..000000000
--- a/scripts/context/stubs/unix/metatex
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-mtxrun --script metatex "$@"
diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun
index 8f8448c85..55bfdef41 100644
--- a/scripts/context/stubs/unix/mtxrun
+++ b/scripts/context/stubs/unix/mtxrun
@@ -6310,7 +6310,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["util-str"] = package.loaded["util-str"] or true
--- original size: 43101, stripped down to: 21622
+-- original size: 43539, stripped down to: 21641
if not modules then modules={} end modules ['util-str']={
version=1.001,
@@ -6667,6 +6667,7 @@ local environment={
formattedfloat=number.formattedfloat,
stripzero=lpeg.patterns.stripzero,
stripzeros=lpeg.patterns.stripzeros,
+ FORMAT=string.f9,
}
local arguments={ "a1" }
setmetatable(arguments,{ __index=function(t,k)
@@ -24754,8 +24755,8 @@ end -- of closure
-- used libraries : l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua util-lib.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 989156
--- stripped bytes : 393037
+-- original bytes : 989594
+-- stripped bytes : 393456
-- end library merge
diff --git a/scripts/context/stubs/win64/metatex.exe b/scripts/context/stubs/win64/metatex.exe
deleted file mode 100644
index 93290a6e0..000000000
--- a/scripts/context/stubs/win64/metatex.exe
+++ /dev/null
Binary files differ
diff --git a/scripts/context/stubs/win64/mtxrun.lua b/scripts/context/stubs/win64/mtxrun.lua
index 8f8448c85..55bfdef41 100644
--- a/scripts/context/stubs/win64/mtxrun.lua
+++ b/scripts/context/stubs/win64/mtxrun.lua
@@ -6310,7 +6310,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["util-str"] = package.loaded["util-str"] or true
--- original size: 43101, stripped down to: 21622
+-- original size: 43539, stripped down to: 21641
if not modules then modules={} end modules ['util-str']={
version=1.001,
@@ -6667,6 +6667,7 @@ local environment={
formattedfloat=number.formattedfloat,
stripzero=lpeg.patterns.stripzero,
stripzeros=lpeg.patterns.stripzeros,
+ FORMAT=string.f9,
}
local arguments={ "a1" }
setmetatable(arguments,{ __index=function(t,k)
@@ -24754,8 +24755,8 @@ end -- of closure
-- used libraries : l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua util-lib.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 989156
--- stripped bytes : 393037
+-- original bytes : 989594
+-- stripped bytes : 393456
-- end library merge
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index b67ac9678..5fefb3bd0 100644
--- a/tex/context/base/mkii/cont-new.mkii
+++ b/tex/context/base/mkii/cont-new.mkii
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2019.01.28 16:58}
+\newcontextversion{2019.02.07 18:46}
%D This file is loaded at runtime, thereby providing an
%D excellent place for hacks, patches, extensions and new
diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii
index 44e420c5d..7d6fc66d4 100644
--- a/tex/context/base/mkii/context.mkii
+++ b/tex/context/base/mkii/context.mkii
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2019.01.28 16:58}
+\edef\contextversion{2019.02.07 18:46}
%D For those who want to use this:
diff --git a/tex/context/base/mkii/mult-it.mkii b/tex/context/base/mkii/mult-it.mkii
index 0b5ab2382..d83672d38 100644
--- a/tex/context/base/mkii/mult-it.mkii
+++ b/tex/context/base/mkii/mult-it.mkii
@@ -587,6 +587,7 @@
\setinterfacevariable{understrike}{understrike}
\setinterfacevariable{understrikes}{understrikes}
\setinterfacevariable{unframed}{unframed}
+\setinterfacevariable{unicode}{unicode}
\setinterfacevariable{unit}{unita}
\setinterfacevariable{units}{unita}
\setinterfacevariable{unknown}{ignoto}
diff --git a/tex/context/base/mkiv/cldf-ini.lua b/tex/context/base/mkiv/cldf-ini.lua
index 0f90f058e..489ed1158 100644
--- a/tex/context/base/mkiv/cldf-ini.lua
+++ b/tex/context/base/mkiv/cldf-ini.lua
@@ -6,6 +6,8 @@ if not modules then modules = { } end modules ['cldf-ini'] = {
license = "see context related readme files"
}
+-- todo: {token} -> 3 tokens
+
-- This started as an experiment: generating context code at the lua end. After all
-- it is surprisingly simple to implement due to metatables. I was wondering if
-- there was a more natural way to deal with commands at the lua end. Of course it's
@@ -899,6 +901,30 @@ if tokenflushmode then -- combine them
return f
end)
+-- core = setmetatableindex(function(parent,k)
+-- local t
+-- local f = function(first,...)
+-- if not t then
+-- t = toks[k]
+-- end
+-- local f = function(first,...)
+-- if first == nil then
+-- flush(t)
+-- else
+-- return writer(context,t,first,...)
+-- end
+-- end
+-- parent[k] = f
+-- if first == nil then
+-- flush(t)
+-- else
+-- return writer(context,t,first,...)
+-- end
+-- end
+-- parent[k] = f
+-- return f
+-- end)
+
core.cs = setmetatableindex(function(parent,k)
local t
local f = function()
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 898068167..e2844174a 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{2019.01.28 16:58}
+\newcontextversion{2019.02.07 18:46}
%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/cont-run.lua b/tex/context/base/mkiv/cont-run.lua
index c8030bf39..2ffbd24dd 100644
--- a/tex/context/base/mkiv/cont-run.lua
+++ b/tex/context/base/mkiv/cont-run.lua
@@ -197,7 +197,7 @@ local preparejob preparejob = function() -- tricky: we need a hook for this
local arguments = environment.arguments
- if arguments.lmtx or not status.obj_ptr then
+ if arguments.lmtx or CONTEXTLMTXMODE then
report("enabling lmtx mode")
context.enablelmtx()
environment.lmtxmode = true
diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv
index b146002d0..13b91f50b 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -42,7 +42,7 @@
%D has to match \type {YYYY.MM.DD HH:MM} format.
\edef\contextformat {\jobname}
-\edef\contextversion{2019.01.28 16:58}
+\edef\contextversion{2019.02.07 18:46}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/font-con.lua b/tex/context/base/mkiv/font-con.lua
index 81ea7c859..9f85ee208 100644
--- a/tex/context/base/mkiv/font-con.lua
+++ b/tex/context/base/mkiv/font-con.lua
@@ -49,6 +49,8 @@ constructors.cache = containers.define("fonts", "constructors", constr
constructors.privateoffset = fonts.privateoffsets.textbase or 0xF0000
constructors.cacheintex = true -- so we see the original table in fonts.font
+constructors.addtounicode = true
+
-- This might become an interface:
local designsizes = allocate()
@@ -424,6 +426,8 @@ function constructors.scale(tfmdata,specification)
targetparameters.forcedsize = forcedsize -- context specific
targetparameters.extrafactor = extrafactor -- context specific
--
+ local addtounicode = constructors.addtounicode
+ --
local tounicode = fonts.mappings.tounicode
local unknowncode = tounicode(0xFFFD)
--
@@ -736,13 +740,19 @@ function constructors.scale(tfmdata,specification)
end
end
local isunicode = description.unicode
- if isunicode then
- chr.unicode = isunicode
- chr.tounicode = tounicode(isunicode)
- -- in luatex > 0.85 we can do this:
- -- chr.tounicode = isunicode
+ if addtounicode then
+ if isunicode then
+ chr.unicode = isunicode
+ chr.tounicode = tounicode(isunicode)
+ -- in luatex > 0.85 we can do this:
+ -- chr.tounicode = isunicode
+ else
+ chr.tounicode = unknowncode
+ end
else
- chr.tounicode = unknowncode
+ if isunicode then
+ chr.unicode = isunicode
+ end
end
if hasquality then
-- we could move these calculations elsewhere (saves calculations)
diff --git a/tex/context/base/mkiv/font-nod.lua b/tex/context/base/mkiv/font-nod.lua
index f878f1e50..6beaef469 100644
--- a/tex/context/base/mkiv/font-nod.lua
+++ b/tex/context/base/mkiv/font-nod.lua
@@ -97,9 +97,6 @@ local fontparameters = hashes.parameters
local properties = nodes.properties.data
--- direct.set_properties_mode(true,false)
--- direct.set_properties_mode(true,true) -- default
-
local function freeze(h,where)
for n in nextnode, h do -- todo: disc but not traced anyway
local p = properties[n]
diff --git a/tex/context/base/mkiv/lpdf-ini.lua b/tex/context/base/mkiv/lpdf-ini.lua
index 055356a4b..c502f3f72 100644
--- a/tex/context/base/mkiv/lpdf-ini.lua
+++ b/tex/context/base/mkiv/lpdf-ini.lua
@@ -535,7 +535,9 @@ do
r[n] = k
end
end
- sort(r)
+ if n > 1 then
+ sort(r)
+ end
for i=1,n do
local k = r[i]
local v = t[k]
diff --git a/tex/context/base/mkiv/lpdf-nod.lua b/tex/context/base/mkiv/lpdf-nod.lua
index 05736a79f..9d4bf9270 100644
--- a/tex/context/base/mkiv/lpdf-nod.lua
+++ b/tex/context/base/mkiv/lpdf-nod.lua
@@ -81,45 +81,83 @@ local function tomatrix(rx,sx,sy,ry,tx,ty) -- todo: tx ty
end
end
-local pdforiginliteral = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pdforiginliteral,"mode",originliteral_code)
-local pdfpageliteral = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pdfpageliteral, "mode",pageliteral_code)
-local pdfdirectliteral = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pdfdirectliteral,"mode",directliteral_code)
-local pdfrawliteral = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pdfrawliteral, "mode",rawliteral_code)
-
-local pdfsave = register(new_node(whatsit_code, savewhatsit_code))
-local pdfrestore = register(new_node(whatsit_code, restorewhatsit_code))
-local pdfsetmatrix = register(new_node(whatsit_code, setmatrixwhatsit_code))
-
-function nodepool.pdforiginliteral(str) local t = copy_node(pdforiginliteral) setdata(t,str) return t end
-function nodepool.pdfpageliteral (str) local t = copy_node(pdfpageliteral ) setdata(t,str) return t end
-function nodepool.pdfdirectliteral(str) local t = copy_node(pdfdirectliteral) setdata(t,str) return t end
-function nodepool.pdfrawliteral (str) local t = copy_node(pdfrawliteral ) setdata(t,str) return t end
-
-local pdfliterals = {
- -- by number
- [originliteral_code] = pdforiginliteral,
- [pageliteral_code] = pdfpageliteral,
- [directliteral_code] = pdfdirectliteral,
- [rawliteral_code] = pdfrawliteral,
- -- by name
- [literalvalues[originliteral_code]] = pdforiginliteral,
- [literalvalues[pageliteral_code]] = pdfpageliteral,
- [literalvalues[directliteral_code]] = pdfdirectliteral,
- [literalvalues[rawliteral_code]] = pdfrawliteral,
-}
+if CONTEXTLMTXMODE then
-function nodepool.pdfliteral(mode,str)
- if str then
- local t = copy_node(pdfliterals[mode] or pdfpageliteral)
- setdata(t,str)
- return t
- else
- local t = copy_node(pdfpageliteral)
- setdata(t,mode)
+ local nodeproperties = nodes.properties.data
+
+ local pdfliteral = register(new_node(whatsit_code,literalwhatsit_code))
+
+ function nodepool.pdforiginliteral(str) local t = copy_node(pdfliteral) nodeproperties[t] = { data = str, mode = originliteral_code } return t end
+ function nodepool.pdfpageliteral (str) local t = copy_node(pdfliteral) nodeproperties[t] = { data = str, mode = pageliteral_code } return t end
+ function nodepool.pdfdirectliteral(str) local t = copy_node(pdfliteral) nodeproperties[t] = { data = str, mode = directliteral_code } return t end
+ function nodepool.pdfrawliteral (str) local t = copy_node(pdfliteral) nodeproperties[t] = { data = str, mode = rawliteral_code } return t end
+
+ local pdfliterals = {
+ -- by number
+ [originliteral_code] = originliteral_code,
+ [pageliteral_code] = pageliteral_code,
+ [directliteral_code] = directliteral_code,
+ [rawliteral_code] = rawliteral_code,
+ -- by name
+ [literalvalues[originliteral_code]] = originliteral_code,
+ [literalvalues[pageliteral_code]] = pageliteral_code,
+ [literalvalues[directliteral_code]] = directliteral_code,
+ [literalvalues[rawliteral_code]] = rawliteral_code,
+ }
+
+ function nodepool.pdfliteral(mode,str)
+ local t = copy_node(pdfliteral)
+ if str then
+ nodeproperties[t] = { data = str, mode = pdfliterals[mode] or pageliteral_code }
+ else
+ nodeproperties[t] = { data = mode, mode = pageliteral_code }
+ end
return t
end
+
+else
+
+ local pdforiginliteral = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pdforiginliteral,"mode",originliteral_code)
+ local pdfpageliteral = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pdfpageliteral, "mode",pageliteral_code)
+ local pdfdirectliteral = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pdfdirectliteral,"mode",directliteral_code)
+ local pdfrawliteral = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pdfrawliteral, "mode",rawliteral_code)
+
+ function nodepool.pdforiginliteral(str) local t = copy_node(pdforiginliteral) setdata(t,str) return t end
+ function nodepool.pdfpageliteral (str) local t = copy_node(pdfpageliteral ) setdata(t,str) return t end
+ function nodepool.pdfdirectliteral(str) local t = copy_node(pdfdirectliteral) setdata(t,str) return t end
+ function nodepool.pdfrawliteral (str) local t = copy_node(pdfrawliteral ) setdata(t,str) return t end
+
+ local pdfliterals = {
+ -- by number
+ [originliteral_code] = pdforiginliteral,
+ [pageliteral_code] = pdfpageliteral,
+ [directliteral_code] = pdfdirectliteral,
+ [rawliteral_code] = pdfrawliteral,
+ -- by name
+ [literalvalues[originliteral_code]] = pdforiginliteral,
+ [literalvalues[pageliteral_code]] = pdfpageliteral,
+ [literalvalues[directliteral_code]] = pdfdirectliteral,
+ [literalvalues[rawliteral_code]] = pdfrawliteral,
+ }
+
+ function nodepool.pdfliteral(mode,str)
+ if str then
+ local t = copy_node(pdfliterals[mode] or pdfpageliteral)
+ setdata(t,str)
+ return t
+ else
+ local t = copy_node(pdfpageliteral)
+ setdata(t,mode)
+ return t
+ end
+ end
+
end
+local pdfsave = register(new_node(whatsit_code, savewhatsit_code))
+local pdfrestore = register(new_node(whatsit_code, restorewhatsit_code))
+local pdfsetmatrix = register(new_node(whatsit_code, setmatrixwhatsit_code))
+
function nodepool.pdfsave()
return copy_node(pdfsave)
end
@@ -128,12 +166,25 @@ function nodepool.pdfrestore()
return copy_node(pdfrestore)
end
-function nodepool.pdfsetmatrix(rx,sx,sy,ry,tx,ty)
- local t = copy_node(pdfsetmatrix)
- setdata(t,tomatrix(rx,sx,sy,ry,tx,ty))
- return t
-end
+if CONTEXTLMTXMODE then
+
+ local nodeproperties = nodes.properties.data
+
+ function nodepool.pdfsetmatrix(rx,sx,sy,ry,tx,ty)
+ local t = copy_node(pdfsetmatrix)
+ nodeproperties[t] = { matrix = tomatrix(rx,sx,sy,ry,tx,ty) }
+ return t
+ end
+else
+
+ function nodepool.pdfsetmatrix(rx,sx,sy,ry,tx,ty)
+ local t = copy_node(pdfsetmatrix)
+ setdata(t,tomatrix(rx,sx,sy,ry,tx,ty))
+ return t
+ end
+
+end
-- best is to use a specific one: origin | page | direct | raw
diff --git a/tex/context/base/mkiv/luat-cod.lua b/tex/context/base/mkiv/luat-cod.lua
index 9f8bbb544..849530f72 100644
--- a/tex/context/base/mkiv/luat-cod.lua
+++ b/tex/context/base/mkiv/luat-cod.lua
@@ -141,6 +141,10 @@ if LUATEXVERION == nil then
+ (tonumber(LUATEXVERSION) or (string.byte(LUATEXVERSION)-string.byte("a")+10))/1000
end
+if CONTEXTLMTXMODE == nil then
+ CONTEXTLMTXMODE = status.obj_ptr == nil and true or false
+end
+
if LUATEXFUNCTIONALITY == nil then
LUATEXFUNCTIONALITY = status.development_id or 6346
end
diff --git a/tex/context/base/mkiv/luat-ini.lua b/tex/context/base/mkiv/luat-ini.lua
index 487e92cfd..87883b55d 100644
--- a/tex/context/base/mkiv/luat-ini.lua
+++ b/tex/context/base/mkiv/luat-ini.lua
@@ -37,6 +37,8 @@ JITSUPPORTED = LUATEXENGINE == "luajittex" or jit
INITEXMODE = status.ini_version
+CONTEXTLMTXMODE = status.obj_ptr == nil and true or false
+
function os.setlocale()
-- no need for a message
end
diff --git a/tex/context/base/mkiv/luat-run.lua b/tex/context/base/mkiv/luat-run.lua
index 5d7026eb7..3939504a2 100644
--- a/tex/context/base/mkiv/luat-run.lua
+++ b/tex/context/base/mkiv/luat-run.lua
@@ -202,14 +202,6 @@ luatex.registerstopactions(luatex.cleanuptempfiles)
-- filenames
-local types = {
- "data",
- "font map",
- "image",
- "font subset",
- "full font",
-}
-
local report_open = logs.reporter("open source")
local report_close = logs.reporter("close source")
local report_load = logs.reporter("load resource")
@@ -225,15 +217,8 @@ function luatex.currentfile()
return stack[#stack] or tex.jobname
end
-local function report_start(left,name)
- if not left then
- -- skip
- elseif left ~= 1 then
- if all then
- -- report_load("%s > %s",types[left],name or "?")
- report_load("type %a, name %a",types[left],name or "?")
- end
- elseif find(name,"virtual://",1,true) then
+local function report_start(name)
+ if find(name,"virtual://",1,true) then
insert(stack,false)
else
insert(stack,name)
@@ -245,16 +230,47 @@ local function report_start(left,name)
end
end
-local function report_stop(right)
- if level == 1 or not right or right == 1 then
- local name = remove(stack)
- if name then
- -- report_close("%i > %i > %s",level,total,name or "?")
- report_close("level %i, order %i, name %a",level,total,name or "?")
- level = level - 1
- synctex.setfilename(stack[#stack] or tex.jobname)
+local function report_stop()
+ local name = remove(stack)
+ if name then
+ -- report_close("%i > %i > %s",level,total,name or "?")
+ report_close("level %i, order %i, name %a",level,total,name or "?")
+ level = level - 1
+ synctex.setfilename(stack[#stack] or tex.jobname)
+ end
+end
+
+if not CONTEXTLMTXMODE then
+
+ local types = {
+ "data",
+ "font map",
+ "image",
+ "font subset",
+ "full font",
+ }
+
+ local do_report_start = report_start
+ local do_report_stop = report_stop
+
+ report_start = function(left,name)
+ if not left then
+ -- skip
+ elseif left ~= 1 then
+ if all then
+ report_load("type %a, name %a",types[left],name or "?")
+ end
+ else
+ do_report_start(name)
+ end
+ end
+
+ report_stop = function(right)
+ if level == 1 or not right or right == 1 then
+ do_report_stop()
end
end
+
end
local function report_none()
diff --git a/tex/context/base/mkiv/metatex.tex b/tex/context/base/mkiv/metatex.tex
deleted file mode 100644
index 7c8a7ff01..000000000
--- a/tex/context/base/mkiv/metatex.tex
+++ /dev/null
@@ -1,30 +0,0 @@
-%D \module
-%D [ file=metatex,
-%D version=2008.10.10,
-%D title=\METATEX,
-%D subtitle=\METATEX\ Format Generation,
-%D author=Hans Hagen,
-%D date=\currentdate,
-%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
-%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 We can experiment here with runtime loading, i.e. no longer
-%D use a format. However, we still need a stub then but it could
-%D as well be luatools (mtxrun) itself then.
-
-%D This format is just a minimal layer on top of the \LUATEX\
-%D engine and will not provide high level functionality. It can
-%D be used as basis for dedicated (specialized) macro packages.
-%D
-%D A format is generated with the command;
-%D
-%D \starttyping
-%D mtxrun --script metatex --make
-%D \stoptyping
-%D
-%D For the moment this is a placeholder. Maybe some day ... the old
-%D file history/metatex/metatex.tex so I can pick up from there if
-%D needed.
diff --git a/tex/context/base/mkiv/mult-def.lua b/tex/context/base/mkiv/mult-def.lua
index 20f7ab040..e03a82a76 100644
--- a/tex/context/base/mkiv/mult-def.lua
+++ b/tex/context/base/mkiv/mult-def.lua
@@ -17075,6 +17075,9 @@ return {
["unframed"]={
["en"]="unframed",
},
+ ["unicode"]={
+ ["en"]="unicode",
+ },
["unit"]={
["cs"]="jednotka",
["de"]="einheit",
diff --git a/tex/context/base/mkiv/node-ini.lua b/tex/context/base/mkiv/node-ini.lua
index 4aa18ee48..5ed270140 100644
--- a/tex/context/base/mkiv/node-ini.lua
+++ b/tex/context/base/mkiv/node-ini.lua
@@ -291,6 +291,7 @@ local whatcodes = simplified(node.whatsits())
local usercodes = allocate {
[ 97] = "attribute", -- a
[100] = "number", -- d
+ [102] = "float", -- f
[108] = "lua", -- l
[110] = "node", -- n
[115] = "string", -- s
@@ -363,6 +364,20 @@ dirvalues = allocate(swapped(dirvalues,dirvalues))
gluevalues = allocate(swapped(gluevalues,gluevalues))
literalvalues = allocate(swapped(literalvalues,literalvalues))
+if CONTEXTLMTXMODE then
+ whatcodes.literal = 0x1000 whatcodes[0x1000] = whatcodes.literal
+ whatcodes.savepos = 0x1001 whatcodes[0x1001] = whatcodes.savepos
+ whatcodes.save = 0x1002 whatcodes[0x1002] = whatcodes.save
+ whatcodes.restore = 0x1003 whatcodes[0x1003] = whatcodes.restore
+ whatcodes.setmatrix = 0x1004 whatcodes[0x1004] = whatcodes.setmatrix
+ whatcodes.lua = 0x1005 whatcodes[0x1005] = whatcodes.lua
+elseif not whatcodes.literal then
+ whatcodes.literal = whatcodes.pdfliteral
+ whatcodes.save = whatcodes.pdfsave
+ whatcodes.restore = whatcodes.pdfrestore
+ whatcodes.setmatrix = whatcodes.pdfsetmatrix
+end
+
nodes.gluecodes = gluecodes
nodes.dircodes = dircodes
nodes.boundarycodes = boundarycodes
@@ -388,19 +403,6 @@ nodes.dirvalues = dirvalues
nodes.gluevalues = gluevalues
nodes.literalvalues = literalvalues
-if whatcodes.literal then
- -- temporary hack
- whatcodes.pdfliteral = whatcodes.literal
- whatcodes.pdfsave = whatcodes.save
- whatcodes.pdfrestore = whatcodes.restore
- whatcodes.pdfsetmatrix = whatcodes.setmatrix
-else
- whatcodes.literal = whatcodes.pdfliteral
- whatcodes.save = whatcodes.pdfsave
- whatcodes.restore = whatcodes.pdfrestore
- whatcodes.setmatrix = whatcodes.pdfsetmatrix
-end
-
dirvalues.lefttoright = 0
dirvalues.righttoleft = 1
diff --git a/tex/context/base/mkiv/node-nut.lua b/tex/context/base/mkiv/node-nut.lua
index f23a0cfc5..85220e25b 100644
--- a/tex/context/base/mkiv/node-nut.lua
+++ b/tex/context/base/mkiv/node-nut.lua
@@ -707,14 +707,10 @@ nodes.properties = {
data = propertydata,
}
-------.set_properties_mode(true,false) -- shallow copy ... problem: in fonts we then affect the originals too
-direct.set_properties_mode(true,true) -- create metatable, slower but needed for font-otj.lua (unless we use an intermediate table)
-
--- todo:
---
--- function direct.set_properties_mode()
--- -- we really need the set modes
--- end
+if direct.set_properties_mode then
+ direct.set_properties_mode(true,true) -- create metatable, slower but needed for font-otj.lua (unless we use an intermediate table)
+ function direct.set_properties_mode() end
+end
-- experimental code with respect to copying attributes has been removed
-- as it doesn't pay of (most attributes are only accessed once anyway)
diff --git a/tex/context/base/mkiv/node-res.lua b/tex/context/base/mkiv/node-res.lua
index da5dca9f3..596d2861f 100644
--- a/tex/context/base/mkiv/node-res.lua
+++ b/tex/context/base/mkiv/node-res.lua
@@ -178,7 +178,7 @@ local user_number = register_nut(copy_nut(user_node)) setfield(user_number
local user_nodes = register_nut(copy_nut(user_node)) setfield(user_nodes, "type",usercodes.node)
local user_string = register_nut(copy_nut(user_node)) setfield(user_string, "type",usercodes.string)
local user_tokens = register_nut(copy_nut(user_node)) setfield(user_tokens, "type",usercodes.token)
------ user_lua = register_nut(copy_nut(user_node)) setfield(user_lua, "type",usercodes.lua) -- in > 0.95
+local user_lua = register_nut(copy_nut(user_node)) setfield(user_lua, "type",usercodes.lua) -- in > 0.95
local user_attributes = register_nut(copy_nut(user_node)) setfield(user_attributes,"type",usercodes.attribute)
local left_margin_kern = register_nut(new_nut(nodecodes.marginkern,0))
@@ -437,6 +437,20 @@ function nutpool.latelua(code)
return n
end
+if CONTEXTLMTXMODE then
+
+ local properties = nodes.properties.data
+
+ local justlua = register_nut(new_nut(whatsit_code,whatsitcodes.lua))
+
+ function nutpool.lua(code)
+ local n = copy_nut(justlua)
+ properties[n] = { data = code }
+ return n
+ end
+
+end
+
nutpool.lateluafunction = nutpool.latelua
function nutpool.leftmarginkern(glyph,width)
@@ -559,10 +573,8 @@ function nutpool.userstring(id,str)
local n = copy_nut(user_string)
if str then
setfield(n,"user_id",id)
- -- setfield(n,"value",str)
setvalue(n,str)
else
- -- setfield(n,"value",id)
setvalue(n,id)
end
return n
@@ -572,10 +584,8 @@ function nutpool.usertokens(id,tokens)
local n = copy_nut(user_tokens)
if tokens then
setfield(n,"user_id",id)
- -- setfield(n,"value",tokens)
setvalue(n,tokens)
else
- -- setfield(n,"value",id)
setvalue(n,id)
end
return n
@@ -585,10 +595,8 @@ function nutpool.userlua(id,code)
local n = copy_nut(user_lua)
if code then
setfield(n,"user_id",id)
- -- setfield(n,"value",code)
setvalue(n,code)
else
- -- setfield(n,"value",id)
setvalue(n,id)
end
return n
@@ -598,10 +606,8 @@ function nutpool.userattributes(id,attr)
local n = copy_nut(user_attributes)
if attr then
setfield(n,"user_id",id)
- -- setfield(n,"value",attr)
setvalue(n,attr)
else
- -- setfield(n,"value",id)
setvalue(n,id)
end
return n
diff --git a/tex/context/base/mkiv/page-run.mkiv b/tex/context/base/mkiv/page-run.mkiv
index 847e82996..85da8d9e5 100644
--- a/tex/context/base/mkiv/page-run.mkiv
+++ b/tex/context/base/mkiv/page-run.mkiv
@@ -153,6 +153,7 @@
\v!right=>\c_page_grids_lineno_mode \plusone,
\v!left=>\c_page_grids_lineno_mode \plustwo,
\v!outer=>\c_page_grids_lineno_mode \plusthree,
+ \v!inner=>\c_page_grids_lineno_mode \plusfour,
\v!columns=>\c_page_grids_columns_mode\plusone]% new option
\ifcase\c_page_grids_location
\let\page_grids_add_to_box\gobbleoneargument
diff --git a/tex/context/base/mkiv/spac-ver.mkiv b/tex/context/base/mkiv/spac-ver.mkiv
index ef33652f1..7b36f9a5b 100644
--- a/tex/context/base/mkiv/spac-ver.mkiv
+++ b/tex/context/base/mkiv/spac-ver.mkiv
@@ -1876,8 +1876,10 @@
\resetteststrut
\offinterlineskip
\hsize#2%
- \ifnum\gridboxlinenomode=\plusthree
- \gridboxlinenomode\ifodd\realpageno\plusone\else\plustwo\fi
+ \ifcase\gridboxlinenomode\or\or\or
+ \gridboxlinenomode\doifoddpageelse\plusone\plustwo % 3: outer
+ \or
+ \gridboxlinenomode\doifoddpageelse\plustwo\plusone % 4: inner
\fi
\topskipcorrection
\gridboxvbox % calculated size
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index 1dfc57e96..6a3114d13 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 e797a2484..da58f3011 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/mkii/syst-rtp.mkiv b/tex/context/base/mkiv/syst-rtp.mkiv
index 82c0778b4..82c0778b4 100644
--- a/tex/context/base/mkii/syst-rtp.mkiv
+++ b/tex/context/base/mkiv/syst-rtp.mkiv
diff --git a/tex/context/base/mkiv/typo-dha.lua b/tex/context/base/mkiv/typo-dha.lua
index c7c34d379..c0bbdc396 100644
--- a/tex/context/base/mkiv/typo-dha.lua
+++ b/tex/context/base/mkiv/typo-dha.lua
@@ -41,7 +41,7 @@ if not modules then modules = { } end modules ['typo-dha'] = {
local nodes, node = nodes, node
-local trace_directions = false trackers.register("typesetters.directions.default", function(v) trace_directions = v end)
+local trace_directions = false trackers.register("typesetters.directions", function(v) trace_directions = v end)
local report_directions = logs.reporter("typesetting","text directions")
diff --git a/tex/context/base/mkiv/typo-dir.mkiv b/tex/context/base/mkiv/typo-dir.mkiv
index 25ff94626..7449a7053 100644
--- a/tex/context/base/mkiv/typo-dir.mkiv
+++ b/tex/context/base/mkiv/typo-dir.mkiv
@@ -20,13 +20,9 @@
\registerctxluafile{typo-dir}{optimize}
\registerctxluafile{typo-dha}{}
-\registerctxluafile{typo-dua}{}
-\registerctxluafile{typo-dub}{}
-\doifelsefileexists{typo-duc-new.lua} {
- \registerctxluafile{typo-duc-new}{}
-} {
- \registerctxluafile{typo-duc}{}
-}
+%registerctxluafile{typo-dua}{}
+%registerctxluafile{typo-dub}{}
+\registerctxluafile{typo-duc}{}
\definesystemattribute[directions][public,pickup]
diff --git a/tex/context/base/mkiv/typo-dua.lua b/tex/context/base/mkiv/typo-dua.lua
index 095d66eae..3db5f510a 100644
--- a/tex/context/base/mkiv/typo-dua.lua
+++ b/tex/context/base/mkiv/typo-dua.lua
@@ -106,21 +106,21 @@ local dirvalues = nodes.dirvalues
local lefttoright_code = dirvalues.lefttoright
local righttoleft_code = dirvalues.righttoleft
------ object_replacement = 0xFFFC -- object replacement character
-local maximum_stack = 60 -- probably spec but not needed
+local maximum_stack = 60
local directions = typesetters.directions
local setcolor = directions.setcolor
------ a_directions = attributes.private('directions')
-
local remove_controls = true directives.register("typesetters.directions.one.removecontrols",function(v) remove_controls = v end)
-local trace_directions = false trackers .register("typesetters.directions.one", function(v) trace_directions = v end)
-local trace_details = false trackers .register("typesetters.directions.one.details", function(v) trace_details = v end)
-
local report_directions = logs.reporter("typesetting","directions one")
+local trace_directions = false trackers .register("typesetters.directions", function(v) trace_directions = v end)
+local trace_details = false trackers .register("typesetters.directions.details", function(v) trace_details = v end)
+
+
+
+
local whitespace = {
lre = true,
rle = true,
@@ -332,28 +332,33 @@ local function find_run_limit_b_s_ws_on(list,start,limit)
return start
end
-local function get_baselevel(head,list,size) -- todo: skip if first is object (or pass head and test for localpar)
- local id = getid(head)
- if id == localpar_code and getsubtype(head) == 0 then
- local direction = getdirection(head)
- if direction == righttoleft_code or direction == "TRT" then -- for old times sake we we handle strings too
- return 1, righttoleft_code, true
- else
- return 0, lefttoright_code, true
+local function get_baselevel(head,list,size,direction)
+ -- This is an adapted version:
+ if direction == lefttoright_code or direction == righttoleft_code then
+ return direction, true
+ elseif getid(head) == localpar_code and getsubtype(head) == 0 then
+ direction = getdirection(head)
+ if direction == lefttoright_code or direction == righttoleft_code then
+ return direction, true
end
- else
- -- P2, P3
- for i=1,size do
- local entry = list[i]
- local direction = entry.direction
- if direction == "r" or direction == "al" then
- return 1, righttoleft_code, true
- elseif direction == "l" then
- return 0, lefttoright_code, true
- end
+ end
+ -- for old times sake we we handle strings too
+ if direction == "TLT" then
+ return lefttoright_code, true
+ elseif direction == "TRT" then
+ return righttoleft_code, true
+ end
+ -- P2, P3
+ for i=1,size do
+ local entry = list[i]
+ local direction = entry.direction
+ if direction == "r" or direction == "al" then
+ return righttoleft_code, true
+ elseif direction == "l" then
+ return lefttoright_code, true
end
- return 0, lefttoright_code, false
end
+ return lefttoright_code, false
end
local function resolve_explicit(list,size,baselevel)
@@ -689,8 +694,6 @@ local function resolve_levels(list,size,baselevel)
end
end
--- This is not ok but we keep it as-is:
-
local function insert_dir_points(list,size)
-- L2, but no actual reversion is done, we simply annotate where
-- begindir/endddir node will be inserted.
@@ -765,7 +768,7 @@ local function apply_to_list(list,size,head,pardir)
if enddir and getsubtype(current) == parfillskip_code then
-- insert the last enddir before \parfillskip glue
local d = new_direction(enddir,true)
- setprop(d,"directions",true)
+ -- setprop(d,"directions",true)
-- setattrlist(d,current)
head = insert_node_before(head,current,d)
enddir = false
@@ -774,7 +777,7 @@ local function apply_to_list(list,size,head,pardir)
if id == localpar_code and getsubtype(current) == 0 then
-- localpar should always be the 1st node
local d = new_direction(begindir)
- setprop(d,"directions",true)
+ -- setprop(d,"directions",true)
-- setattrlist(d,current)
head, current = insert_node_after(head,current,d)
begindir = nil
@@ -782,7 +785,7 @@ local function apply_to_list(list,size,head,pardir)
end
if begindir then
local d = new_direction(begindir)
- setprop(d,"directions",true)
+ -- setprop(d,"directions",true)
-- setattrlist(d,current)
head = insert_node_before(head,current,d)
end
@@ -795,7 +798,7 @@ local function apply_to_list(list,size,head,pardir)
end
if enddir then
local d = new_direction(enddir,true)
- setprop(d,"directions",true)
+ -- setprop(d,"directions",true)
-- setattrlist(d,current)
head, current = insert_node_after(head,current,d)
end
@@ -812,9 +815,10 @@ local function apply_to_list(list,size,head,pardir)
return head
end
-local function process(head)
+local function process(head,direction,only_one,where)
+ -- This is an adapted version:
local list, size = build_list(head)
- local baselevel, pardir, dirfound = get_baselevel(head,list,size) -- we always have an inline dir node in context
+ local baselevel, dirfound = get_baselevel(head,list,size,direction)
if not dirfound and trace_details then
report_directions("no initial direction found, gambling")
end
@@ -828,7 +832,7 @@ local function process(head)
report_directions("after : %s",show_list(list,size,"direction"))
report_directions("result : %s",show_done(list,size))
end
- return apply_to_list(list,size,head,pardir)
+ return apply_to_list(list,size,head,baselevel)
end
directions.installhandler(interfaces.variables.one,process)
diff --git a/tex/context/base/mkiv/typo-dub.lua b/tex/context/base/mkiv/typo-dub.lua
index fde31ca93..f27e40476 100644
--- a/tex/context/base/mkiv/typo-dub.lua
+++ b/tex/context/base/mkiv/typo-dub.lua
@@ -94,22 +94,22 @@ local dirvalues = nodes.dirvalues
local lefttoright_code = dirvalues.lefttoright
local righttoleft_code = dirvalues.righttoleft
-local maximum_stack = 0xFF -- unicode: 60, will be jumped to 125, we don't care too much
+local maximum_stack = 0xFF
+
+local a_directions = attributes.private('directions')
local directions = typesetters.directions
local setcolor = directions.setcolor
local getfences = directions.getfences
-local a_directions = attributes.private('directions')
-
local remove_controls = true directives.register("typesetters.directions.removecontrols",function(v) remove_controls = v end)
----- analyze_fences = true directives.register("typesetters.directions.analyzefences", function(v) analyze_fences = v end)
-local trace_directions = false trackers .register("typesetters.directions.two", function(v) trace_directions = v end)
-local trace_details = false trackers .register("typesetters.directions.two.details", function(v) trace_details = v end)
-local trace_list = false trackers .register("typesetters.directions.two.list", function(v) trace_list = v end)
+local report_directions = logs.reporter("typesetting","directions three")
-local report_directions = logs.reporter("typesetting","directions two")
+local trace_directions = false trackers.register("typesetters.directions", function(v) trace_directions = v end)
+local trace_details = false trackers.register("typesetters.directions.details", function(v) trace_details = v end)
+local trace_list = false trackers.register("typesetters.directions.list", function(v) trace_list = v end)
-- strong (old):
--
@@ -120,7 +120,7 @@ local report_directions = logs.reporter("typesetting","directions two")
-- lre : left to right embedding
-- rle : left to left embedding
-- al : right to legt arabic (esp punctuation issues)
-
+--
-- weak:
--
-- en : english number
@@ -130,23 +130,23 @@ local report_directions = logs.reporter("typesetting","directions two")
-- cs : common number separator
-- nsm : nonspacing mark
-- bn : boundary neutral
-
+--
-- neutral:
--
-- b : paragraph separator
-- s : segment separator
-- ws : whitespace
-- on : other neutrals
-
+--
-- interesting: this is indeed better (and more what we expect i.e. we already use this split
-- in the old original (also these isolates)
-
+--
-- strong (new):
--
-- l : left to right
-- r : right to left
-- al : right to left arabic (esp punctuation issues)
-
+--
-- explicit: (new)
--
-- lro : left to right override
@@ -209,27 +209,28 @@ end
local function show_done(list,size)
local joiner = utfchar(0x200C)
local result = { }
+ local format = formatters["<%s>"]
for i=1,size do
local entry = list[i]
local character = entry.char
local begindir = entry.begindir
local enddir = entry.enddir
if begindir then
- result[#result+1] = formatters["<%s>"](begindir)
+ result[#result+1] = format(begindir)
end
if entry.remove then
-- continue
elseif character == 0xFFFC then
- result[#result+1] = formatters["<%s>"]("?")
+ result[#result+1] = format("?")
elseif character == 0x0020 then
- result[#result+1] = formatters["<%s>"](" ")
+ result[#result+1] = format(" ")
elseif character >= 0x202A and character <= 0x202C then
- result[#result+1] = formatters["<%s>"](entry.original)
+ result[#result+1] = format(entry.original)
else
result[#result+1] = utfchar(character)
end
if enddir then
- result[#result+1] = formatters["<%s>"](enddir)
+ result[#result+1] = format(enddir)
end
end
return concat(result,joiner)
@@ -239,17 +240,7 @@ end
-- char is only used for mirror, so in fact we can as well only store it for
-- glyphs only
--- using metatable is slightly faster so maybe some day ...
-
--- local space = { char = 0x0020, direction = "ws", original = "ws" }
--- local lre = { char = 0x202A, direction = "lre", original = "lre" }
--- local rle = { char = 0x202B, direction = "rle", original = "rle" }
--- local pdf = { char = 0x202C, direction = "pdf", original = "pdf" }
--- local object = { char = 0xFFFC, direction = "on", original = "on" }
---
--- local t = { level = 0 } setmetatable(t,space) list[size] = t
-
-local function build_list(head) -- todo: store node pointer ... saves loop
+local function build_list(head)
-- P1
local current = head
local list = { }
@@ -352,8 +343,8 @@ end
local function resolve_fences(list,size,start,limit)
-- N0: funny effects, not always better, so it's an option
- local stack = { }
- local top = 0
+ local stack = { }
+ local nofstack = 0
for i=start,limit do
local entry = list[i]
if entry.direction == "on" then
@@ -364,15 +355,15 @@ local function resolve_fences(list,size,start,limit)
entry.mirror = mirror
entry.class = class
if class == "open" then
- top = top + 1
- stack[top] = { mirror, i, false }
- elseif top == 0 then
+ nofstack = nofstack + 1
+ stack[nofstack] = { mirror, i, false }
+ elseif nofstack == 0 then
-- skip
elseif class == "close" then
- while top > 0 do
- local s = stack[top]
- if s[1] == char then
- local open = s[2]
+ while nofstack > 0 do
+ local stacktop = stack[nofstack]
+ if stacktop[1] == char then
+ local open = stacktop[2]
local close = i
list[open ].paired = close
list[close].paired = open
@@ -380,7 +371,7 @@ local function resolve_fences(list,size,start,limit)
else
-- do we mirror or not
end
- top = top - 1
+ nofstack = nofstack - 1
end
end
end
@@ -403,28 +394,32 @@ end
-- the action
-local function get_baselevel(head,list,size) -- todo: skip if first is object (or pass head and test for localpar)
- local id = getid(head)
- if id == localpar_code and getsubtype(head) == 0 then
- local direction = getdirection(head)
- if direction == righttoleft_code or direction == "TRT" then -- for old times sake we we handle strings too
- return 1, righttoleft_code, true
- else
- return 0, lefttoright_code, true
+local function get_baselevel(head,list,size,direction)
+ if direction == lefttoright_code or direction == righttoleft_code then
+ return direction, true
+ elseif getid(head) == localpar_code and getsubtype(head) == 0 then
+ direction = getdirection(head)
+ if direction == lefttoright_code or direction == righttoleft_code then
+ return direction, true
end
- else
- -- P2, P3
- for i=1,size do
- local entry = list[i]
- local direction = entry.direction
- if direction == "r" or direction == "al" then -- and an ?
- return 1, righttoleft_code, true
- elseif direction == "l" then
- return 0, lefttoright_code, true
- end
+ end
+ -- for old times sake we we handle strings too
+ if direction == "TLT" then
+ return lefttoright_code, true
+ elseif direction == "TRT" then
+ return righttoleft_code, true
+ end
+ -- P2, P3
+ for i=1,size do
+ local entry = list[i]
+ local direction = entry.direction
+ if direction == "r" or direction == "al" then -- and an ?
+ return righttoleft_code, true
+ elseif direction == "l" then
+ return lefttoright_code, true
end
- return 0, lefttoright_code, false
end
+ return lefttoright_code, false
end
local function resolve_explicit(list,size,baselevel)
@@ -492,14 +487,15 @@ local function resolve_explicit(list,size,baselevel)
elseif direction == "pdf" then
if nofstack > 0 then
local stacktop = stack[nofstack]
- nofstack = nofstack - 1
level = stacktop[1]
override = stacktop[2]
+ nofstack = nofstack - 1
entry.level = level
entry.direction = "bn"
entry.remove = true
elseif trace_directions then
- report_directions("stack underflow at position %a with direction %a",i,direction)
+ report_directions("stack underflow at position %a with direction %a",
+ i, direction)
end
-- X6
else
@@ -698,33 +694,6 @@ local function resolve_neutral(list,size,start,limit,orderbefore,orderafter)
end
end
--- local function resolve_implicit(list,size,start,limit,orderbefore,orderafter)
--- -- I1
--- for i=start,limit do
--- local entry = list[i]
--- local level = entry.level
--- if level % 2 ~= 1 then -- not odd(level)
--- local direction = entry.direction
--- if direction == "r" then
--- entry.level = level + 1
--- elseif direction == "an" or direction == "en" then
--- entry.level = level + 2
--- end
--- end
--- end
--- -- I2
--- for i=start,limit do
--- local entry = list[i]
--- local level = entry.level
--- if level % 2 == 1 then -- odd(level)
--- local direction = entry.direction
--- if direction == "l" or direction == "en" or direction == "an" then
--- entry.level = level + 1
--- end
--- end
--- end
--- end
-
local function resolve_implicit(list,size,start,limit,orderbefore,orderafter,baselevel)
for i=start,limit do
local entry = list[i]
@@ -824,52 +793,6 @@ local function resolve_levels(list,size,baselevel,analyze_fences)
end
end
--- local function insert_dir_points(list,size)
--- -- L2, but no actual reversion is done, we simply annotate where
--- -- begindir/endddir node will be inserted.
--- local maxlevel = 0
--- local finaldir = false
--- for i=1,size do
--- local level = list[i].level
--- if level > maxlevel then
--- maxlevel = level
--- end
--- end
--- for level=0,maxlevel do
--- local started = false
--- local begindir = nil
--- local enddir = nil
--- if level % 2 == 1 then
--- begindir = righttoleft_code
--- enddir = righttoleft_code
--- else
--- begindir = lefttoright_code
--- enddir = lefttoright_code
--- end
--- for i=1,size do
--- local entry = list[i]
--- if entry.level >= level then
--- if not started then
--- entry.begindir = begindir
--- started = true
--- end
--- else
--- if started then
--- list[i-1].enddir = enddir
--- started = false
--- end
--- end
--- end
--- -- make sure to close the run at end of line
--- if started then
--- finaldir = enddir
--- end
--- end
--- if finaldir then
--- list[size].enddir = finaldir
--- end
--- end
-
local function insert_dir_points(list,size)
-- L2, but no actual reversion is done, we simply annotate where
-- begindir/endddir node will be inserted.
@@ -978,7 +901,7 @@ local function apply_to_list(list,size,head,pardir)
if enddir and getsubtype(current) == parfillskip_code then
-- insert the last enddir before \parfillskip glue
local d = new_direction(enddir,true)
- setprop(d,"directions",true)
+ -- setprop(d,"directions",true)
-- setattrlist(d,current)
head = insert_node_before(head,current,d)
enddir = false
@@ -987,7 +910,7 @@ local function apply_to_list(list,size,head,pardir)
if id == localpar_code and getsubtype(current) == 0 then
-- localpar should always be the 1st node
local d = new_direction(begindir)
- setprop(d,"directions",true)
+ -- setprop(d,"directions",true)
-- setattrlist(d,current)
head, current = insert_node_after(head,current,d)
begindir = nil
@@ -995,7 +918,7 @@ local function apply_to_list(list,size,head,pardir)
end
if begindir then
local d = new_direction(begindir)
- setprop(d,"directions",true)
+ -- setprop(d,"directions",true)
-- setattrlist(d,current)
head = insert_node_before(head,current,d)
end
@@ -1008,7 +931,7 @@ local function apply_to_list(list,size,head,pardir)
end
if enddir then
local d = new_direction(enddir,true)
- setprop(d,"directions",true)
+ -- setprop(d,"directions",true)
-- setattrlist(d,current)
head, current = insert_node_after(head,current,d)
end
@@ -1028,13 +951,13 @@ local function apply_to_list(list,size,head,pardir)
return head
end
-local function process(head)
+local function process(head,direction,only_one,where)
-- for the moment a whole paragraph property
local attr = getattr(head,a_directions)
local analyze_fences = getfences(attr)
--
local list, size = build_list(head)
- local baselevel, pardir, dirfound = get_baselevel(head,list,size) -- we always have an inline dir node in context
+ local baselevel, dirfound = get_baselevel(head,list,size,direction)
if not dirfound and trace_details then
report_directions("no initial direction found, gambling")
end
@@ -1048,7 +971,7 @@ local function process(head)
report_directions("after : %s",show_list(list,size,"direction"))
report_directions("result : %s",show_done(list,size))
end
- return apply_to_list(list,size,head,pardir)
+ return apply_to_list(list,size,head,baselevel)
end
directions.installhandler(interfaces.variables.two,process)
diff --git a/tex/context/base/mkiv/typo-duc.lua b/tex/context/base/mkiv/typo-duc.lua
index c1338d0d1..f91fc4d64 100644
--- a/tex/context/base/mkiv/typo-duc.lua
+++ b/tex/context/base/mkiv/typo-duc.lua
@@ -56,7 +56,6 @@ local mirrordata = characters.mirrors
local textclassdata = characters.textclasses
local nuts = nodes.nuts
-local tonut = nuts.tonut
local getnext = nuts.getnext
local getid = nuts.getid
@@ -99,23 +98,23 @@ local dirvalues = nodes.dirvalues
local lefttoright_code = dirvalues.lefttoright
local righttoleft_code = dirvalues.righttoleft
-local maximum_stack = 0xFF -- unicode: 60, will be jumped to 125, we don't care too much
+local maximum_stack = 0xFF
+
+local a_directions = attributes.private('directions')
local directions = typesetters.directions
local setcolor = directions.setcolor
local getfences = directions.getfences
-local a_directions = attributes.private('directions')
-
local remove_controls = true directives.register("typesetters.directions.removecontrols",function(v) remove_controls = v end)
----- analyze_fences = true directives.register("typesetters.directions.analyzefences", function(v) analyze_fences = v end)
-local trace_directions = false trackers.register("typesetters.directions.three", function(v) trace_directions = v end)
-local trace_details = false trackers.register("typesetters.directions.three.details", function(v) trace_details = v end)
-local trace_list = false trackers.register("typesetters.directions.three.list", function(v) trace_list = v end)
-
local report_directions = logs.reporter("typesetting","directions three")
+local trace_directions = false trackers.register("typesetters.directions", function(v) trace_directions = v end)
+local trace_details = false trackers.register("typesetters.directions.details", function(v) trace_details = v end)
+local trace_list = false trackers.register("typesetters.directions.list", function(v) trace_list = v end)
+
-- strong (old):
--
-- l : left to right
@@ -125,7 +124,7 @@ local report_directions = logs.reporter("typesetting","directions three")
-- lre : left to right embedding
-- rle : left to left embedding
-- al : right to legt arabic (esp punctuation issues)
-
+--
-- weak:
--
-- en : english number
@@ -135,23 +134,23 @@ local report_directions = logs.reporter("typesetting","directions three")
-- cs : common number separator
-- nsm : nonspacing mark
-- bn : boundary neutral
-
+--
-- neutral:
--
-- b : paragraph separator
-- s : segment separator
-- ws : whitespace
-- on : other neutrals
-
+--
-- interesting: this is indeed better (and more what we expect i.e. we already use this split
-- in the old original (also these isolates)
-
+--
-- strong (new):
--
-- l : left to right
-- r : right to left
-- al : right to left arabic (esp punctuation issues)
-
+--
-- explicit: (new)
--
-- lro : left to right override
@@ -244,7 +243,7 @@ end
-- keeping the list and overwriting doesn't save much runtime, only a few percent
-- char is only used for mirror, so in fact we can as well only store it for
-- glyphs only
-
+--
-- tracking what direction is used and skipping tests is not faster (extra kind of
-- compensates gain)
@@ -257,7 +256,7 @@ local mt_object = { __index = { char = 0xFFFC, direction = "on", original = "on
local stack = table.setmetatableindex("table") -- shared
local list = { } -- shared
-local function build_list(head,where) -- todo: store node pointer ... saves loop
+local function build_list(head,where)
-- P1
local current = head
local size = 0
@@ -354,9 +353,10 @@ end
-- ש ( ל ( א ) כ ) 2-8,4-6
-- ש ( ל [ א ] כ ) 2-8,4-6
+local fencestack = table.setmetatableindex("table")
+
local function resolve_fences(list,size,start,limit)
-- N0: funny effects, not always better, so it's an option
- local stack = { }
local nofstack = 0
for i=start,limit do
local entry = list[i]
@@ -369,14 +369,14 @@ local function resolve_fences(list,size,start,limit)
entry.class = class
if class == "open" then
nofstack = nofstack + 1
- local stacktop = stack[nofstack]
+ local stacktop = fencestack[nofstack]
stacktop[1] = mirror
stacktop[2] = i
elseif nofstack == 0 then
-- skip
elseif class == "close" then
while nofstack > 0 do
- local stacktop = stack[nofstack]
+ local stacktop = fencestack[nofstack]
if stacktop[1] == char then
local open = stacktop[2]
local close = i
@@ -424,7 +424,7 @@ local function get_baselevel(head,list,size,direction)
elseif direction == "TRT" then
return righttoleft_code, true
end
- -- P2, P3:
+ -- P2, P3
for i=1,size do
local entry = list[i]
local direction = entry.direction
@@ -531,11 +531,6 @@ local function resolve_explicit(list,size,baselevel)
end
end
end
--- else
--- for i=1,size do
--- list[i].level = baselevel
--- end
--- end
-- X8 (reset states and overrides after paragraph)
end
@@ -1006,19 +1001,12 @@ end
-- do have a glyph!
local function process(head,direction,only_one,where)
-
--- print("START")
--- for n in nodes.traverse(nodes.tonode(head)) do
--- print(" "..tostring(n))
--- end
--- print("STOP")
-
-- for the moment a whole paragraph property
local attr = getattr(head,a_directions)
local analyze_fences = getfences(attr)
--
local list, size = build_list(head,where)
- local baselevel, dirfound = get_baselevel(head,list,size,direction) -- we always have an inline dir node in context
+ local baselevel, dirfound = get_baselevel(head,list,size,direction)
if trace_details then
report_directions("analyze: baselevel %a",baselevel == righttoleft_code and "r2l" or "l2r")
report_directions("before : %s",show_list(list,size,"original"))
@@ -1033,4 +1021,9 @@ local function process(head,direction,only_one,where)
return apply_to_list(list,size,head,baselevel)
end
-directions.installhandler(interfaces.variables.three,process)
+local variables = interfaces.variables
+
+directions.installhandler(variables.one, process) -- for old times sake
+directions.installhandler(variables.two, process) -- for old times sake
+directions.installhandler(variables.three, process) -- for old times sake
+directions.installhandler(variables.unicode,process)
diff --git a/tex/context/base/mkiv/util-str.lua b/tex/context/base/mkiv/util-str.lua
index 410a4a547..713c294eb 100644
--- a/tex/context/base/mkiv/util-str.lua
+++ b/tex/context/base/mkiv/util-str.lua
@@ -612,6 +612,8 @@ local environment = {
formattedfloat = number.formattedfloat,
stripzero = lpeg.patterns.stripzero,
stripzeros = lpeg.patterns.stripzeros,
+
+ FORMAT = string.f9,
}
-- -- --
@@ -730,6 +732,17 @@ local format_F = function(f) -- beware, no cast to number
end
end
+-- if string.f9 then
+-- format_F = function(f) -- beware, no cast to number
+-- n = n + 1
+-- if not f or f == "" then
+-- return format("(((a%s > -0.0000000005 and a%s < 0.0000000005) and '0') or FORMAT(a%s))",n,n,n,n,n)
+-- else
+-- return format("((a%s %% 1 == 0) and format('%%i',a%s) or FORMAT(a%s,'%%%sf'))",n,n,n,f)
+-- end
+-- end
+-- end
+
local format_k = function(b,a) -- slow
n = n + 1
return format("formattedfloat(a%s,%i,%i)",n,b or 0, a or 0)
diff --git a/tex/context/interface/mkii/keys-it.xml b/tex/context/interface/mkii/keys-it.xml
index 47880bd63..2ebcb4a9d 100644
--- a/tex/context/interface/mkii/keys-it.xml
+++ b/tex/context/interface/mkii/keys-it.xml
@@ -590,6 +590,7 @@
<cd:variable name='understrike' value='understrike'/>
<cd:variable name='understrikes' value='understrikes'/>
<cd:variable name='unframed' value='unframed'/>
+ <cd:variable name='unicode' value='unicode'/>
<cd:variable name='unit' value='unita'/>
<cd:variable name='units' value='unita'/>
<cd:variable name='unknown' value='ignoto'/>
diff --git a/tex/context/interface/mkiv/context-en.xml b/tex/context/interface/mkiv/context-en.xml
index acd8ba5cb..73af42a96 100644
--- a/tex/context/interface/mkiv/context-en.xml
+++ b/tex/context/interface/mkiv/context-en.xml
@@ -5221,10 +5221,10 @@
<cd:constant type="no"/>
</cd:parameter>
<cd:parameter name="align">
- <cd:constant type="setupalign"/>
+ <cd:inherit type="setupalign"/>
</cd:parameter>
<cd:parameter name="tolerance">
- <cd:constant type="setuptolerance"/>
+ <cd:inherit type="setuptolerance"/>
</cd:parameter>
<cd:parameter name="blank">
<cd:inherit name="blank"/>
@@ -15044,6 +15044,7 @@
<cd:constant default="yes" type="right"/>
<cd:constant type="left"/>
<cd:constant type="outer"/>
+ <cd:constant type="inner"/>
<cd:constant default="yes" type="columns"/>
</cd:keywords>
</cd:arguments>
diff --git a/tex/context/interface/mkiv/i-columns.xml b/tex/context/interface/mkiv/i-columns.xml
index b89bd5845..bbc022ac6 100644
--- a/tex/context/interface/mkiv/i-columns.xml
+++ b/tex/context/interface/mkiv/i-columns.xml
@@ -34,10 +34,10 @@
<cd:constant type="no"/>
</cd:parameter>
<cd:parameter name="align">
- <cd:constant type="setupalign"/>
+ <cd:inherit type="setupalign"/>
</cd:parameter>
<cd:parameter name="tolerance">
- <cd:constant type="setuptolerance"/>
+ <cd:inherit type="setuptolerance"/>
</cd:parameter>
<cd:parameter name="blank">
<cd:inherit name="blank"/>
@@ -108,4 +108,4 @@
</cd:arguments>
</cd:command>
-</cd:interface> \ No newline at end of file
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf
index 2996163ad..d181f8a6b 100644
--- a/tex/context/interface/mkiv/i-context.pdf
+++ b/tex/context/interface/mkiv/i-context.pdf
Binary files differ
diff --git a/tex/context/interface/mkiv/i-grid.xml b/tex/context/interface/mkiv/i-grid.xml
index cb70fa416..9b072127b 100644
--- a/tex/context/interface/mkiv/i-grid.xml
+++ b/tex/context/interface/mkiv/i-grid.xml
@@ -18,6 +18,7 @@
<cd:constant type="right" default="yes"/>
<cd:constant type="left"/>
<cd:constant type="outer"/>
+ <cd:constant type="inner"/>
<cd:constant type="columns" default="yes"/>
</cd:keywords>
</cd:arguments>
@@ -192,4 +193,4 @@
</cd:arguments>
</cd:command>
-</cd:interface> \ No newline at end of file
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf
index 7fc07ede0..fba78c447 100644
--- a/tex/context/interface/mkiv/i-readme.pdf
+++ b/tex/context/interface/mkiv/i-readme.pdf
Binary files differ
diff --git a/tex/generic/context/luatex/luatex-basics-nod.lua b/tex/generic/context/luatex/luatex-basics-nod.lua
index 276c7efa5..e22f170ef 100644
--- a/tex/generic/context/luatex/luatex-basics-nod.lua
+++ b/tex/generic/context/luatex/luatex-basics-nod.lua
@@ -259,9 +259,10 @@ end
local propertydata = direct.get_properties_table()
nodes.properties = { data = propertydata }
-direct.set_properties_mode(true,true) -- needed for injection
-
-function direct.set_properties_mode() end -- we really need the set modes
+if direct.set_properties_mode then
+ direct.set_properties_mode(true,true)
+ function direct.set_properties_mode() end
+end
nuts.getprop = function(n,k)
local p = propertydata[n]
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 89ae7d64d..679efbd87 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 : 01/28/19 16:58:09
+-- merge date : 02/07/19 18:46:18
do -- begin closure to overcome local limits and interference
@@ -3386,6 +3386,7 @@ local environment={
formattedfloat=number.formattedfloat,
stripzero=lpeg.patterns.stripzero,
stripzeros=lpeg.patterns.stripzeros,
+ FORMAT=string.f9,
}
local arguments={ "a1" }
setmetatable(arguments,{ __index=function(t,k)
@@ -4855,8 +4856,10 @@ if not nuts.getdirection then
end
local propertydata=direct.get_properties_table()
nodes.properties={ data=propertydata }
-direct.set_properties_mode(true,true)
-function direct.set_properties_mode() end
+if direct.set_properties_mode then
+ direct.set_properties_mode(true,true)
+ function direct.set_properties_mode() end
+end
nuts.getprop=function(n,k)
local p=propertydata[n]
if p then
@@ -8283,7 +8286,8 @@ constructors.namemode="fullpath"
constructors.version=1.01
constructors.cache=containers.define("fonts","constructors",constructors.version,false)
constructors.privateoffset=fonts.privateoffsets.textbase or 0xF0000
-constructors.cacheintex=true
+constructors.cacheintex=true
+constructors.addtounicode=true
local designsizes=allocate()
constructors.designsizes=designsizes
local loadedfonts=allocate()
@@ -8543,6 +8547,7 @@ function constructors.scale(tfmdata,specification)
targetparameters.textsize=textsize
targetparameters.forcedsize=forcedsize
targetparameters.extrafactor=extrafactor
+ local addtounicode=constructors.addtounicode
local tounicode=fonts.mappings.tounicode
local unknowncode=tounicode(0xFFFD)
local defaultwidth=resources.defaultwidth or 0
@@ -8796,11 +8801,17 @@ function constructors.scale(tfmdata,specification)
end
end
local isunicode=description.unicode
- if isunicode then
- chr.unicode=isunicode
- chr.tounicode=tounicode(isunicode)
+ if addtounicode then
+ if isunicode then
+ chr.unicode=isunicode
+ chr.tounicode=tounicode(isunicode)
+ else
+ chr.tounicode=unknowncode
+ end
else
- chr.tounicode=unknowncode
+ if isunicode then
+ chr.unicode=isunicode
+ end
end
if hasquality then
local ve=character.expansion_factor