summaryrefslogtreecommitdiff
path: root/tex
diff options
context:
space:
mode:
authorContext Git Mirror Bot <phg42.2a@gmail.com>2016-03-31 20:15:47 +0200
committerContext Git Mirror Bot <phg42.2a@gmail.com>2016-03-31 20:15:47 +0200
commitad6c001890494bd0432aaf76940b38a997042c03 (patch)
tree0e95d32d8e3fcafda7ed1f0c33e5739303560036 /tex
parentecea0b75f52a98aae0e6bcfb649927fb84ffb9c0 (diff)
downloadcontext-ad6c001890494bd0432aaf76940b38a997042c03.tar.gz
2016-03-31 19:50:00
Diffstat (limited to 'tex')
-rw-r--r--tex/context/base/context-version.pdfbin4164 -> 4258 bytes
-rw-r--r--tex/context/base/mkiv/back-pdf.lua24
-rw-r--r--tex/context/base/mkiv/back-pdf.mkiv151
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/core-sys.lua4
-rw-r--r--tex/context/base/mkiv/lpdf-fmt.lua2
-rw-r--r--tex/context/base/mkiv/lpdf-ini.lua138
-rw-r--r--tex/context/base/mkiv/lpdf-mis.lua7
-rw-r--r--tex/context/base/mkiv/lpdf-xmp.lua145
-rw-r--r--tex/context/base/mkiv/mult-prm.lua6
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin9123 -> 9286 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin267230 -> 267495 bytes
-rw-r--r--tex/context/base/mkiv/syst-ini.mkiv20
-rw-r--r--tex/context/base/mkiv/tabl-tbl.mkiv276
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
-rw-r--r--tex/generic/context/luatex/luatex-pdf.tex9
17 files changed, 321 insertions, 467 deletions
diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf
index 1a94bdf92..e8a938c9d 100644
--- a/tex/context/base/context-version.pdf
+++ b/tex/context/base/context-version.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/back-pdf.lua b/tex/context/base/mkiv/back-pdf.lua
index 5d007ed43..66ca89fb4 100644
--- a/tex/context/base/mkiv/back-pdf.lua
+++ b/tex/context/base/mkiv/back-pdf.lua
@@ -23,6 +23,7 @@ local scaninteger = scanners.integer
local scankeyword = scanners.keyword
local scanners = interfaces.scanners
+local implement = interfaces.implement
local outputfilename
@@ -145,3 +146,26 @@ scanners.pdfstartmirroring = function()
end
scanners.pdfstopmirroring = scanners.pdfstartmirroring
+
+-- todo, change the above to implement too --
+
+implement {
+ name = "setmapfile",
+ arguments = "string",
+ actions = pdf.setmapfile
+}
+
+implement {
+ name = "setmapfile",
+ arguments = "string",
+ actions = pdf.setmapline
+}
+
+implement {
+ name = "setpdfcompression",
+ arguments = { "integer", "integer" },
+ actions = function(c,o)
+ pdf.setcompresslevel(c)
+ pdf.setobjcompresslevel(o)
+ end
+}
diff --git a/tex/context/base/mkiv/back-pdf.mkiv b/tex/context/base/mkiv/back-pdf.mkiv
index 93e6af0b3..ab9e4160c 100644
--- a/tex/context/base/mkiv/back-pdf.mkiv
+++ b/tex/context/base/mkiv/back-pdf.mkiv
@@ -44,29 +44,124 @@
\outputmode \plusone \let\modeoutput \undefined \newcount\outputmode \outputmode \plusone
-%D These are already set:
-
-% \pdfhorigin 1in
-% \pdfvorigin \pdfhorigin
-
-%D These too and most of them will be protected as well:
-
-% \pdfminorversion \plusseven
-% \pdfgentounicode \plusone % \let\pdfgentounicode \undefined \newcount\pdfgentounicode
-% \pdfinclusioncopyfonts \plusone % \let\pdfinclusioncopyfonts \undefined \newcount\pdfinclusioncopyfonts
-% \pdfinclusionerrorlevel \zerocount % \let\pdfinclusionerrorlevel\undefined \newcount\pdfinclusionerrorlevel
-% \pdfdecimaldigits \plussix % \let\pdfdecimaldigits \undefined \newcount\pdfdecimaldigits
-% \pdfimageresolution 300
-% \pdfpkresolution 600
-
-%D Let's block these (we could share a dummy:
-
-\let\pdfcatalog \relax \newtoks\pdfcatalog
-\let\pdfinfo \relax \newtoks\pdfinfo
-\let\pdfnames \relax \newtoks\pdfnames
-\let\pdfpageresources\relax \newtoks\pdfpageresources
-\let\pdfpageattr \relax \newtoks\pdfpageattr
-\let\pdfpagesattr \relax \newtoks\pdfpagesattr
+%D Because we do a lot in \LUA\ and don't want interferences, we nil most of the
+%D \PDFTEX\ primitives. Of course one can always use the \type {\pdfvariable},
+%D \type {\pdfextension} and \type {\pdffeedback} primitives but it will probably
+%D have bad side effects.
+
+%D These are no-ops and don't even intercept what comes next. Maybe some day
+%D I'll write a parser that maps onto \CONTEXT.
+
+\let\pdfcolorstack \relax
+\let\pdfcolorstackinit \relax
+\let\pdfannot \relax
+\let\pdfstartlink \relax
+\let\pdfendlink \relax
+\let\pdfoutline \relax
+\let\pdfdest \relax
+\let\pdfthread \relax
+\let\pdfstartthread \relax
+\let\pdfendthread \relax
+\let\pdffontattr \relax
+\let\pdfglyphtounicode \relax
+
+%D Here we do intercept (silently) what gets passed. One should use the
+%D \CONTEXT\ interfaces instead.
+
+\let\pdfcatalog \relax \newtoks \pdfcatalog
+\let\pdfinfo \relax \newtoks \pdfinfo
+\let\pdfnames \relax \newtoks \pdfnames
+\let\pdftrailer \relax \newtoks \pdftrailer
+\let\pdfpageresources \relax \newtoks \pdfpageresources
+\let\pdfpageattr \relax \newtoks \pdfpageattr
+\let\pdfpagesattr \relax \newtoks \pdfpagesattr
+\let\pdfxformattr \relax \newtoks \pdfxformattr
+\let\pdfxformresources \relax \newtoks \pdfxformresources
+
+%D We use the \LUA\ interface (which then permits more control over
+%D possible pdf/x extensions).
+
+\let\pdfcompresslevel \relax \newcount\pdfcompresslevel
+\let\pdfobjcompresslevel\relax \newcount\pdfobjcompresslevel
+
+%D But we still provide:
+
+\unexpanded\def\nopdfcompression {\clf_setpdfcompression\zerocount\zerocount}
+\unexpanded\def\maximumpdfcompression{\clf_setpdfcompression\plusnine \plusnine }
+\unexpanded\def\normalpdfcompression {\clf_setpdfcompression\plusthree\plusthree}
+
+%D These might even become no-ops as we don't need them in \CONTEXT:
+
+\unexpanded\def\pdfmapfile#1{\clf_setmapfile{#1}}
+\unexpanded\def\pdfmapline#1{\clf_setmapline{#1}}
+
+%D We don't support these directives, at least not this way. If they are needed
+%D by third party modules we can provide some interface.
+
+\let\pdfcreationdate \relax \newtoks \pdfcreationdate
+\let\pdfdecimaldigits \relax \newcount\pdfdecimaldigits
+\let\pdfdestmargin \relax \newcount\pdfdestmargin
+\let\pdffontname \relax \newcount\pdffontname
+\let\pdffontobjnum \relax \newcount\pdffontobjnum
+\let\pdffontsize \relax \newcount\pdffontsize
+\let\pdfgamma \relax \newcount\pdfgamma
+\let\pdfgentounicode \relax \newcount\pdfgentounicode
+\let\pdfhorigin \relax \newcount\pdfhorigin
+\let\pdfignoreunknownimages \relax \newcount\pdfignoreunknownimages
+\let\pdfimageaddfilename \relax \newcount\pdfimageaddfilename
+\let\pdfimageapplygamma \relax \newcount\pdfimageapplygamma
+\let\pdfimagegamma \relax \newcount\pdfimagegamma
+\let\pdfimagehicolor \relax \newcount\pdfimagehicolor
+\let\pdfimageresolution \relax \newcount\pdfimageresolution
+\let\pdfincludechars \relax \newtoks \pdffontsize
+\let\pdfinclusioncopyfonts \relax \newcount\pdfinclusioncopyfonts
+\let\pdfinclusionerrorlevel \relax \newcount\pdfinclusionerrorlevel
+\let\pdfinfoomitdate \relax \newcount\pdfinfoomitdate
+\let\pdflastannot \relax \newcount\pdflastannot
+\let\pdflastlink \relax \newcount\pdflastlink
+\let\pdflinkmargin \relax \newcount\pdflinkmargin
+\let\pdfminorversion \relax \newcount\pdfminorversion
+\let\pdfpagebox \relax \newcount\pdfpagebox
+\let\pdfpageref \relax \newcount\pdfpageref
+\let\pdfpkfixeddpi \relax \newcount\pdfpkfixeddpi
+\let\pdfpkmode \relax \newtoks \pdfpkmode
+\let\pdfpkresolution \relax \newcount\pdfpkresolution
+\let\pdfretval \relax \newcount\pdfretval
+\let\pdfsuppressoptionalinfo \relax \newcount\pdfsuppressoptionalinfo
+\let\pdfsuppressptexinfo \relax \newcount\pdfsuppressptexinfo
+\let\pdftexrevision \relax \newcount\pdftexrevision
+\let\pdftexversion \relax \newcount\pdftexversion
+\let\pdfthreadmargin \relax \newcount\pdfthreadmargin
+\let\pdftrailerid \relax \newtoks \pdftrailerid
+\let\pdfuniqueresname \relax \newcount\pdfuniqueresname
+\let\pdfvorigin \relax \newcount\pdfvorigin
+\let\pdfxformmargin \relax \newcount\pdfxformmargin
+\let\pdfxformname \relax \newcount\pdfxformname
+
+%D These are still accepted but are normally not needed.
+
+\let\pdflastxform \lastsavedboxresourceindex
+\let\pdflastximage \lastsavedimageresourceindex
+\let\pdflastximagepages \lastsavedimageresourcepages
+\let\pdflastxpos \lastxpos
+\let\pdflastypos \lastypos
+\let\pdfrefxform \useboxresource
+\let\pdfrefximage \useimageresource
+\let\pdfsavepos \savepos
+\let\pdfxform \saveboxresource
+\let\pdfximage \saveimageresource
+
+%D For the moment we keep these as they are but they will become \LUA\
+%D calls eventually, after which we will nil the three \type {\pdf}
+%D interface primitives.
+
+\normalprotected\def\pdfliteral {\pdfextension literal }
+\normalprotected\def\pdfobj {\pdfextension obj }
+ \def\pdflastobj {\numexpr\pdffeedback lastobj\relax}
+\normalprotected\def\pdfrefobj {\pdfextension refobj }
+\normalprotected\def\pdfrestore {\pdfextension restore\relax}
+\normalprotected\def\pdfsave {\pdfextension save\relax}
+\normalprotected\def\pdfsetmatrix{\pdfextension setmatrix }
%D This one can be consulted by users although the suffix is also
%D a system mode.
@@ -120,16 +215,6 @@
\def\pdfcolor #1{\clf_lpdf_color\numexpr\thecolorattribute{#1}\relax}
\let\PDFcolor\pdfcolor
-%D An example of usage is:
-
-\appendtoks % this will be moved to lua
- \pdfbackendsetinfo{ConTeXt.Version}{\contextversion}%
- \pdfbackendsetinfo{ConTeXt.Time} {\number\normalyear.\twodigits\normalmonth.\twodigits\normalday\space \twodigits\currenthour:\twodigits\currentminute}%
- \pdfbackendsetinfo{ConTeXt.Jobname}{\jobname}%
- \pdfbackendsetinfo{ConTeXt.Url} {www.pragma-ade.com}%
- \pdfbackendsetinfo{ConTeXt.Support}{contextgarden.net}%
-\to \everylastbackendshipout
-
%D Transformations
% rotation
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 12b23290e..8cfd414d0 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.31 09:55}
+\newcontextversion{2016.03.31 19:47}
%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 e6df46de3..7ffeea63d 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.31 09:55}
+\edef\contextversion{2016.03.31 19:47}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/core-sys.lua b/tex/context/base/mkiv/core-sys.lua
index f688a1454..3e39fa9da 100644
--- a/tex/context/base/mkiv/core-sys.lua
+++ b/tex/context/base/mkiv/core-sys.lua
@@ -73,8 +73,8 @@ statistics.register("result saved in file", function()
local outputfilename = environment.outputfilename or environment.jobname or tex.jobname or "<unset>"
if (tex.pdfoutput or tex.outputmode) > 0 then
return format("%s.%s, compresslevel %s, objectcompresslevel %s",outputfilename,"pdf",
- tex.pdfcompresslevel or pdf.getcompresslevel(),
- tex.pdfobjcompresslevel or pdf.getobjcompresslevel()
+ pdf.getcompresslevel(),
+ pdf.getobjcompresslevel()
)
else
return format("%s.%s",outputfilename,"dvi") -- hard to imagine
diff --git a/tex/context/base/mkiv/lpdf-fmt.lua b/tex/context/base/mkiv/lpdf-fmt.lua
index 84e4f1c38..b1d9a4b0c 100644
--- a/tex/context/base/mkiv/lpdf-fmt.lua
+++ b/tex/context/base/mkiv/lpdf-fmt.lua
@@ -720,7 +720,7 @@ function codeinjections.setformat(s)
local majorversion = math.div(pdf_version,10)
local minorversion = math.mod(pdf_version,10)
local objectcompression = spec.object_compression and pdf_version >= 15
- local compresslevel = level or tex.pdfcompresslevel -- keep default
+ local compresslevel = level or pdf.getcompresslevel() -- keep default
local objectcompresslevel = (objectcompression and (level or pdf.getobjcompresslevel())) or 0
pdf.setcompresslevel (compresslevel)
pdf.setobjcompresslevel(objectcompresslevel)
diff --git a/tex/context/base/mkiv/lpdf-ini.lua b/tex/context/base/mkiv/lpdf-ini.lua
index 0d96abb7d..2149f4729 100644
--- a/tex/context/base/mkiv/lpdf-ini.lua
+++ b/tex/context/base/mkiv/lpdf-ini.lua
@@ -66,55 +66,14 @@ local two_strings = interfaces.strings[2]
local pdf = pdf
local factor = number.dimenfactors.bp
-if pdf.setinfo then
- -- table.setmetatablenewindex(pdf,function(t,k,v)
- -- report_blocked("'pdf.%s' is not supported",k)
- -- end)
- -- the getters are harmless
-end
-
do
local texget = tex.get
local texset = tex.set
- if pdf.setminorversion then
- function pdf.setmajorversion (n) texset("global","pdfmajorversion", n) end
- function pdf.getmajorversion ( ) return texget("pdfmajorversion") end
- else
- --
- function pdf.setmajorversion (n) texset("global","pdfmajorversion",n) end
- function pdf.setminorversion (n) texset("global","pdfminorversion",n) end
- function pdf.setcompresslevel (n) texset("global","pdfcompresslevel",n) end
- function pdf.setobjcompresslevel(n) texset("global","pdfobjcompresslevel",n) end
- --
- function pdf.getmajorversion ( ) return texget("pdfmajorversion") end
- function pdf.getminorversion ( ) return texget("pdfminorversion") end
- function pdf.getcompresslevel ( ) return texget("pdfcompresslevel") end
- function pdf.getobjcompresslevel( ) return texget("pdfobjcompresslevel") end
- end
-
-end
-
-if not pdf.setinfo then
- function pdf.setinfo (s) pdf.info = s end
- function pdf.setcatalog(s) pdf.catalog = s end
- function pdf.setnames (s) pdf.names = s end
- function pdf.settrailer(s) pdf.trailer = s end
-end
+ function pdf.setmajorversion (n) texset("global","pdfmajorversion", n) end
+ function pdf.getmajorversion ( ) return texget("pdfmajorversion") end
-if not pdf.getpos then
- function pdf.getpos () return pdf.h, pdf.v end
- function pdf.gethpos () return pdf.h end
- function pdf.getvpos () return pdf.v end
- function pdf.hasmatrix() return false end
- function pdf.getmatrix() return 1, 0, 0, 1, 0, 0 end
-end
-
-if not pdf.setpageresources then
- function pdf.setpageresources (s) pdf.pageresources = s end
- function pdf.setpageattributes (s) pdf.pageattributes = s end
- function pdf.setpagesattributes(s) pdf.pagesattributes = s end
end
local pdfsetinfo = pdf.setinfo
@@ -137,15 +96,6 @@ local pdfimmediateobject = pdf.immediateobj
local pdfdeferredobject = pdf.obj
local pdfreferenceobject = pdf.refobj
--- function pdf.setinfo () report_blocked("'pdf.%s' is not supported","setinfo") end -- use lpdf.addtoinfo etc
--- function pdf.setcatalog () report_blocked("'pdf.%s' is not supported","setcatalog") end
--- function pdf.setnames () report_blocked("'pdf.%s' is not supported","setnames") end
--- function pdf.settrailer () report_blocked("'pdf.%s' is not supported","settrailer") end
--- function pdf.setpageresources () report_blocked("'pdf.%s' is not supported","setpageresources") end
--- function pdf.setpageattributes () report_blocked("'pdf.%s' is not supported","setpageattributes") end
--- function pdf.setpagesattributes() report_blocked("'pdf.%s' is not supported","setpagesattributes") end
--- function pdf.registerannot () report_blocked("'pdf.%s' is not supported","registerannot") end
-
local function pdfdisablecommand(command)
pdf[command] = function() report_blocked("'pdf.%s' is not supported",command) end
end
@@ -637,47 +587,51 @@ function lpdf.escaped(str)
return lpegmatch(escaped,str) or str
end
-local p_null = { } setmetatable(p_null, mt_z)
-local p_true = { } setmetatable(p_true, mt_t)
-local p_false = { } setmetatable(p_false,mt_f)
+do
-local function pdfnull()
- return p_null
-end
+ local p_null = { } setmetatable(p_null, mt_z)
+ local p_true = { } setmetatable(p_true, mt_t)
+ local p_false = { } setmetatable(p_false,mt_f)
--- print(pdfboolean(false),pdfboolean(false,false),pdfboolean(false,true))
--- print(pdfboolean(true),pdfboolean(true,false),pdfboolean(true,true))
--- print(pdfboolean(nil,true),pdfboolean(nil,false))
+ pdfnull = function()
+ return p_null
+ end
-local function pdfboolean(b,default)
- if type(b) == "boolean" then
- return b and p_true or p_false
- else
- return default and p_true or p_false
+ pdfboolean = function(b,default)
+ if type(b) == "boolean" then
+ return b and p_true or p_false
+ else
+ return default and p_true or p_false
+ end
end
-end
-local r_zero = setmetatable({ 0 },mt_r)
+ -- print(pdfboolean(false),pdfboolean(false,false),pdfboolean(false,true))
+ -- print(pdfboolean(true),pdfboolean(true,false),pdfboolean(true,true))
+ -- print(pdfboolean(nil,true),pdfboolean(nil,false))
-local function pdfreference(r) -- maybe make a weak table
- if r and r ~= 0 then
- return setmetatable({ r },mt_r)
- else
- return r_zero
+ local r_zero = setmetatable({ 0 },mt_r)
+
+ pdfreference = function(r) -- maybe make a weak table
+ if r and r ~= 0 then
+ return setmetatable({ r },mt_r)
+ else
+ return r_zero
+ end
end
-end
-local v_zero = setmetatable({ 0 },mt_v)
-local v_empty = setmetatable({ "" },mt_v)
+ local v_zero = setmetatable({ 0 },mt_v)
+ local v_empty = setmetatable({ "" },mt_v)
-local function pdfverbose(t) -- maybe check for type
- if t == 0 then
- return v_zero
- elseif t == "" then
- return v_empty
- else
- return setmetatable({ t },mt_v)
+ pdfverbose = function(t) -- maybe check for type
+ if t == 0 then
+ return v_zero
+ elseif t == "" then
+ return v_empty
+ else
+ return setmetatable({ t },mt_v)
+ end
end
+
end
lpdf.stream = pdfstream -- THIS WILL PROBABLY CHANGE
@@ -1188,12 +1142,6 @@ function lpdf.limited(n,min,max,default)
end
end
--- lpdf.addtoinfo("ConTeXt.Version", environment.version)
--- lpdf.addtoinfo("ConTeXt.Time", os.date("%Y.%m.%d %H:%M")) -- :%S
--- lpdf.addtoinfo("ConTeXt.Jobname", environment.jobname)
--- lpdf.addtoinfo("ConTeXt.Url", "www.pragma-ade.com")
--- lpdf.addtoinfo("ConTeXt.Support", "contextgarden.net")
-
-- if not pdfreferenceobject then
--
-- local delayed = { }
@@ -1309,17 +1257,15 @@ end
-- interface
-local lpdfverbose = lpdf.verbose
-
implement { name = "lpdf_collectedresources", actions = { lpdf.collectedresources, context } }
implement { name = "lpdf_addtocatalog", arguments = two_strings, actions = lpdf.addtocatalog }
-implement { name = "lpdf_addtoinfo", arguments = two_strings, actions = lpdf.addtoinfo }
+implement { name = "lpdf_addtoinfo", arguments = two_strings, actions = function(a,b,c) lpdf.addtoinfo(a,b,c) end } -- gets adapted
implement { name = "lpdf_addtonames", arguments = two_strings, actions = lpdf.addtonames }
implement { name = "lpdf_addtopageattributes", arguments = two_strings, actions = lpdf.addtopageattributes }
implement { name = "lpdf_addtopagesattributes", arguments = two_strings, actions = lpdf.addtopagesattributes }
implement { name = "lpdf_addtopageresources", arguments = two_strings, actions = lpdf.addtopageresources }
-implement { name = "lpdf_adddocumentextgstate", arguments = two_strings, actions = function(a,b) lpdf.adddocumentextgstate (a,lpdfverbose(b)) end }
-implement { name = "lpdf_adddocumentcolorspace", arguments = two_strings, actions = function(a,b) lpdf.adddocumentcolorspace(a,lpdfverbose(b)) end }
-implement { name = "lpdf_adddocumentpattern", arguments = two_strings, actions = function(a,b) lpdf.adddocumentpattern (a,lpdfverbose(b)) end }
-implement { name = "lpdf_adddocumentshade", arguments = two_strings, actions = function(a,b) lpdf.adddocumentshade (a,lpdfverbose(b)) end }
+implement { name = "lpdf_adddocumentextgstate", arguments = two_strings, actions = function(a,b) lpdf.adddocumentextgstate (a,pdfverbose(b)) end }
+implement { name = "lpdf_adddocumentcolorspace", arguments = two_strings, actions = function(a,b) lpdf.adddocumentcolorspace(a,pdfverbose(b)) end }
+implement { name = "lpdf_adddocumentpattern", arguments = two_strings, actions = function(a,b) lpdf.adddocumentpattern (a,pdfverbose(b)) end }
+implement { name = "lpdf_adddocumentshade", arguments = two_strings, actions = function(a,b) lpdf.adddocumentshade (a,pdfverbose(b)) end }
diff --git a/tex/context/base/mkiv/lpdf-mis.lua b/tex/context/base/mkiv/lpdf-mis.lua
index 164e27c62..62713727d 100644
--- a/tex/context/base/mkiv/lpdf-mis.lua
+++ b/tex/context/base/mkiv/lpdf-mis.lua
@@ -206,6 +206,13 @@ local function setupidentity()
end
local id = lpdf.id()
addtoinfo("ID", pdfstring(id), id) -- needed for pdf/x
+ --
+ addtoinfo("ConTeXt.Version", environment.version)
+ addtoinfo("ConTeXt.Time", os.date("%Y-%m-%d %H:%M"))
+ addtoinfo("ConTeXt.Jobname", environment.jobname or tex.jobname)
+ addtoinfo("ConTeXt.Url", "www.pragma-ade.com")
+ addtoinfo("ConTeXt.Support", "contextgarden.net")
+ --
done = true
else
-- no need for a message
diff --git a/tex/context/base/mkiv/lpdf-xmp.lua b/tex/context/base/mkiv/lpdf-xmp.lua
index f372b3461..b8170319c 100644
--- a/tex/context/base/mkiv/lpdf-xmp.lua
+++ b/tex/context/base/mkiv/lpdf-xmp.lua
@@ -7,7 +7,7 @@ if not modules then modules = { } end modules ['lpdf-xmp'] = {
comment = "with help from Peter Rolf",
}
-local tostring = tostring
+local tostring, type = tostring, type
local format, random, char, gsub, concat = string.format, math.random, string.char, string.gsub, table.concat
local xmlfillin = xml.fillin
@@ -37,47 +37,105 @@ local xpacket = [[
local mapping = {
-- user defined keys (pdfx:)
- ["ConTeXt.Jobname"] = "rdf:Description/pdfx:ConTeXt.Jobname",
- ["ConTeXt.Time"] = "rdf:Description/pdfx:ConTeXt.Time",
- ["ConTeXt.Url"] = "rdf:Description/pdfx:ConTeXt.Url",
- ["ConTeXt.Version"] = "rdf:Description/pdfx:ConTeXt.Version",
- ["ID"] = "rdf:Description/pdfx:ID",
- ["PTEX.Fullbanner"] = "rdf:Description/pdfx:PTEX.Fullbanner",
+ ["ConTeXt.Jobname"] = { "context", "rdf:Description/pdfx:ConTeXt.Jobname" },
+ ["ConTeXt.Time"] = { "date", "rdf:Description/pdfx:ConTeXt.Time" },
+ ["ConTeXt.Url"] = { "context", "rdf:Description/pdfx:ConTeXt.Url" },
+ ["ConTeXt.Version"] = { "context", "rdf:Description/pdfx:ConTeXt.Version" },
+ ["ID"] = { "date", "rdf:Description/pdfx:ID" }, -- has date
+ ["PTEX.Fullbanner"] = { "metadata","rdf:Description/pdfx:PTEX.Fullbanner" },
-- Adobe PDF schema
- ["Keywords"] = "rdf:Description/pdf:Keywords",
- ["Producer"] = "rdf:Description/pdf:Producer",
- -- ["Trapped"] = "rdf:Description/pdf:Trapped", -- '/False' in /Info, but 'False' in XMP
+ ["Keywords"] = { "metadata","rdf:Description/pdf:Keywords" },
+ ["Producer"] = { "metadata","rdf:Description/pdf:Producer" },
+ -- ["Trapped"] = { "pdf", "rdf:Description/pdf:Trapped" }, -- '/False' in /Info, but 'False' in XMP
-- Dublin Core schema
- ["Author"] = "rdf:Description/dc:creator/rdf:Seq/rdf:li",
- ["Format"] = "rdf:Description/dc:format", -- optional, but nice to have
- ["Subject"] = "rdf:Description/dc:description/rdf:Alt/rdf:li",
- ["Title"] = "rdf:Description/dc:title/rdf:Alt/rdf:li",
+ ["Author"] = { "metadata","rdf:Description/dc:creator/rdf:Seq/rdf:li" },
+ ["Format"] = { "metadata","rdf:Description/dc:format" }, -- optional, but nice to have
+ ["Subject"] = { "metadata","rdf:Description/dc:description/rdf:Alt/rdf:li" },
+ ["Title"] = { "metadata","rdf:Description/dc:title/rdf:Alt/rdf:li" },
-- XMP Basic schema
- ["CreateDate"] = "rdf:Description/xmp:CreateDate",
- ["Creator"] = "rdf:Description/xmp:CreatorTool",
- ["MetadataDate"] = "rdf:Description/xmp:MetadataDate",
- ["ModifyDate"] = "rdf:Description/xmp:ModifyDate",
+ ["CreateDate"] = { "date", "rdf:Description/xmp:CreateDate" },
+ ["CreationDate"] = { "date", "rdf:Description/xmp:CreationDate" }, -- dummy
+ ["Creator"] = { "metadata","rdf:Description/xmp:CreatorTool" },
+ ["MetadataDate"] = { "date", "rdf:Description/xmp:MetadataDate" },
+ ["ModDate"] = { "date", "rdf:Description/xmp:ModDate" }, -- dummy
+ ["ModifyDate"] = { "date", "rdf:Description/xmp:ModifyDate" },
-- XMP Media Management schema
- ["DocumentID"] = "rdf:Description/xmpMM:DocumentID",
- ["InstanceID"] = "rdf:Description/xmpMM:InstanceID",
- ["RenditionClass"] = "rdf:Description/xmpMM:RenditionClass", -- PDF/X-4
- ["VersionID"] = "rdf:Description/xmpMM:VersionID", -- PDF/X-4
+ ["DocumentID"] = { "date", "rdf:Description/xmpMM:DocumentID" }, -- uuid
+ ["InstanceID"] = { "date", "rdf:Description/xmpMM:InstanceID" }, -- uuid
+ ["RenditionClass"] = { "pdf", "rdf:Description/xmpMM:RenditionClass" }, -- PDF/X-4
+ ["VersionID"] = { "pdf", "rdf:Description/xmpMM:VersionID" }, -- PDF/X-4
-- additional entries
-- PDF/X
- ["GTS_PDFXVersion"] = "rdf:Description/pdfxid:GTS_PDFXVersion",
+ ["GTS_PDFXVersion"] = { "pdf", "rdf:Description/pdfxid:GTS_PDFXVersion" },
-- optional entries
-- all what is visible in the 'document properties --> additional metadata' window
-- XMP Rights Management schema (optional)
- ["Marked"] = "rdf:Description/xmpRights:Marked",
- -- ["Owner"] = "rdf:Description/xmpRights:Owner/rdf:Bag/rdf:li", -- maybe useful (not visible)
- -- ["UsageTerms"] = "rdf:Description/xmpRights:UsageTerms", -- maybe useful (not visible)
- ["WebStatement"] = "rdf:Description/xmpRights:WebStatement",
+ ["Marked"] = { "pdf", "rdf:Description/xmpRights:Marked" },
+ -- ["Owner"] = { "metadata", "rdf:Description/xmpRights:Owner/rdf:Bag/rdf:li" }, -- maybe useful (not visible)
+ -- ["UsageTerms"] = { "metadata", "rdf:Description/xmpRights:UsageTerms" }, -- maybe useful (not visible)
+ ["WebStatement"] = { "metadata", "rdf:Description/xmpRights:WebStatement" },
-- Photoshop PDF schema (optional)
- ["AuthorsPosition"] = "rdf:Description/photoshop:AuthorsPosition",
- ["Copyright"] = "rdf:Description/photoshop:Copyright",
- ["CaptionWriter"] = "rdf:Description/photoshop:CaptionWriter",
+ ["AuthorsPosition"] = { "metadata", "rdf:Description/photoshop:AuthorsPosition" },
+ ["Copyright"] = { "metadata", "rdf:Description/photoshop:Copyright" },
+ ["CaptionWriter"] = { "metadata", "rdf:Description/photoshop:CaptionWriter" },
}
+pdf.setsuppressoptionalinfo(
+ 0 --
+ + 1 -- pdfnofullbanner
+ + 2 -- pdfnofilename
+ + 4 -- pdfnopagenumber
+ + 8 -- pdfnoinfodict
+ + 16 -- pdfnocreator
+ + 32 -- pdfnocreationdate
+ + 64 -- pdfnomoddate
+ + 128 -- pdfnoproducer
+ + 256 -- pdfnotrapped
+ -- + 512 -- pdfnoid
+)
+
+local included = table.setmetatableindex( {
+ context = true,
+ id = true,
+ metadata = true,
+ date = true,
+ id = true,
+ pdf = true,
+}, function(t,k)
+ return true
+end)
+
+directives.register("backend.nodates", function(v)
+ included.date = not v
+ if v then
+ report_info("no date/time information will be added to the PDF file")
+ end
+end)
+
+directives.register("backend.trailerid", function(v)
+ if v then
+ if toboolean(v) or v == "" then
+ v = "This file is processed by ConTeXt and LuaTeX."
+ else
+ v = tostring(v)
+ end
+ local h = md5.HEX(v)
+ report_info("using hashed trailer id %a (%a)",v,h)
+ pdf.settrailerid(format("[<%s> <%s>]",h,h))
+ end
+end)
+
+local function permitdetail(what)
+ local m = mapping[what]
+ if m then
+ return included[m[1]] and m[2]
+ else
+ return included[what]
+ end
+end
+
+lpdf.permitdetail = permitdetail
+
-- maybe some day we will load the xmp file at runtime
local xmp, xmpfile, xmpname = nil, nil, "lpdf-pdx.xml"
@@ -117,8 +175,8 @@ local function valid_xmp()
end
function lpdf.addxmpinfo(tag,value,check)
- local pattern = mapping[tag]
- if pattern then
+ local pattern = permitdetail(tag)
+ if type(pattern) == "string" then
xmlfillin(xmp or valid_xmp(),pattern,value,check)
end
end
@@ -129,14 +187,21 @@ local pdfaddtoinfo = lpdf.addtoinfo
local pdfaddxmpinfo = lpdf.addxmpinfo
function lpdf.addtoinfo(tag,pdfvalue,strvalue)
- pdfaddtoinfo(tag,pdfvalue)
- local value = strvalue or gsub(tostring(pdfvalue),"^%((.*)%)$","%1") -- hack
- if trace_info then
- report_info("set %a to %a",tag,value)
+ local pattern = permitdetail(tag)
+ if pattern then
+ pdfaddtoinfo(tag,pdfvalue)
+ end
+ if type(pattern) == "string" then
+ local value = strvalue or gsub(tostring(pdfvalue),"^%((.*)%)$","%1") -- hack
+ if trace_info then
+ report_info("set %a to %a",tag,value)
+ end
+ xmlfillin(xmp or valid_xmp(),pattern,value,check)
end
- pdfaddxmpinfo(tag,value)
end
+local pdfaddtoinfo = lpdf.addtoinfo -- used later
+
-- for the do-it-yourselvers
function lpdf.insertxmpinfo(pattern,whatever,prepend)
@@ -151,12 +216,6 @@ end
local t = { } for i=1,24 do t[i] = random() end
-if not pdf.getcompresslevel then
- pdf.getcompresslevel = function()
- return tex.pdfcompresslevel or tex.getcount("pdfcompresslevel")
- end
-end
-
local function flushxmpinfo()
commands.pushrandomseed()
commands.setrandomseed(os.time())
diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua
index 4ecc006d0..37983f9a4 100644
--- a/tex/context/base/mkiv/mult-prm.lua
+++ b/tex/context/base/mkiv/mult-prm.lua
@@ -420,7 +420,8 @@ return {
"pdfinclusionerrorlevel",
"pdfignoreunknownimages",
"pdfinfo",
- "pdfinfoid",
+ "pdfinfoomitdate",
+ "pdftrailerid",
"pdfinsertht",
"pdflastannot",
"pdflastlinedepth",
@@ -1044,7 +1045,8 @@ return {
"pdfinclusionerrorlevel",
"pdfignoreunknownimages",
"pdfinfo",
- "pdfinfoid",
+ "pdfinfoomitdate",
+ "pdftrailerid",
"pdfinsertht",
"pdflastannot",
"pdflastlinedepth",
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index f98bfdcb0..f0c78c1f1 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 0ab85b2c0..e9e7ae6af 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/syst-ini.mkiv b/tex/context/base/mkiv/syst-ini.mkiv
index fa8fd1162..2b665ee16 100644
--- a/tex/context/base/mkiv/syst-ini.mkiv
+++ b/tex/context/base/mkiv/syst-ini.mkiv
@@ -234,8 +234,7 @@
\let\newfam\newfamily
-
-\ifdefined\firstvalidlanguage \firstvalidlanguage\plusone \fi
+\firstvalidlanguage\plusone
% Watch out, for the moment we disable the check for already being defined
% later we will revert this but first all chardefs must be replaced.
@@ -981,10 +980,6 @@
\normalprotected\def\pdfmapline {\pdfextension mapline }
\normalprotected\def\pdftrailer {\pdfextension trailer }
\normalprotected\def\pdfglyphtounicode {\pdfextension glyphtounicode }
-\normalprotected\gdef\pdfsuppressoptionalinfo {\pdfextension suppressoptionalinfo }
-\global \let\pdfsuppressptexinfo \pdfsuppressoptionalinfo
-\normalprotected\gdef\pdfinfoid {\pdfextension infoid }
-\normalprotected\gdef\pdfinfoomitdate {\pdfextension suppressoptionalinfo \numexpr32+64\relax}
% \chardef\pdfnofullbanner = 1
% \chardef\pdfnofilename = 2
@@ -1054,6 +1049,11 @@
\edef\pdfxformresources {\pdfvariable xformresources}
\edef\pdfpkmode {\pdfvariable pkmode}
+\edef\pdfsuppressoptionalinfo{\pdfvariable suppressoptionalinfo }
+\let \pdfsuppressptexinfo \pdfsuppressoptionalinfo
+\edef\pdftrailerid {\pdfvariable trailerid }
+\edef\pdfinfoomitdate {\pdfvariable suppressoptionalinfo \numexpr32+64\relax}
+
\normalprotected\def\nopdfcompression {\pdfobjcompresslevel\zerocount \pdfcompresslevel\zerocount}
\normalprotected\def\maximumpdfcompression{\pdfobjcompresslevel\plusnine \pdfcompresslevel\plusnine }
\normalprotected\def\normalpdfcompression {\pdfobjcompresslevel\plusthree \pdfcompresslevel\plusthree}
@@ -1099,13 +1099,7 @@
\suppressmathparerror \plusone % \let\suppressmathparerror \relax
\suppressifcsnameerror\plusone % \let\suppressifcsnameerror\relax
-\ifdefined\matheqnogapstep % for now
- \matheqnogapstep \zerocount
-\fi
-
-%D New primitive:
-
-\ifdefined\hyphenationmin \else \newcount\hyphenationmin \fi
+\matheqnogapstep \zerocount % fr now
%D While cleaning this code up a bit I was listening to Heather Nova's \CD\ Redbird.
%D The first song on that \CD\ ends with a few lines suitable for ending this
diff --git a/tex/context/base/mkiv/tabl-tbl.mkiv b/tex/context/base/mkiv/tabl-tbl.mkiv
index 58e6b7108..36254cf1f 100644
--- a/tex/context/base/mkiv/tabl-tbl.mkiv
+++ b/tex/context/base/mkiv/tabl-tbl.mkiv
@@ -379,7 +379,7 @@
\unexpanded\def\tabl_tabulate_check_local_vrule_color_second#1%
{\relax
\ifx\m_tabl_tabulate_vrule_color_local\empty
- \gdef\m_tabl_tabulate_vrule_color{#1}%
+ \xdef\m_tabl_tabulate_vrule_color{#1}%
\else
\global\let\m_tabl_tabulate_vrule_color\m_tabl_tabulate_vrule_color_local
\global\let\m_tabl_tabulate_vrule_color_local\empty
@@ -427,95 +427,6 @@
\let\tabl_tabulate_hook_g\donothing
-% \def\tabl_tabulate_set_preamble_step#1#2% only makes sense for many tabulates
-% {\normalexpanded{\t_tabl_tabulate_preamble{\the\t_tabl_tabulate_preamble
-% \tabl_tabulate_check_local_vrule_thickness\constantdimenargument\d_tabl_tabulate_vrulethickness
-% \tabl_tabulate_check_local_vrule_color\constantemptyargument\m_tabl_tabulate_vrule_color
-% \tabl_tabulate_check_local_color\constantemptyargument\m_tabl_tabulate_color\constantnumberargument\c_tabl_tabulate_colorspan
-% \tabl_tabulate_color_side_right
-% \aligntab
-% \tabl_tabulate_column_vrule_inject
-% \tabl_tabulate_color_side_left
-% \tabl_tabulate_inject_pre_skip{\the\dimexpr\s_tabl_tabulate_pre}% get rid of plus
-% \alignmark\alignmark
-% \aligntab
-% \tabl_tabulate_color_side_both
-% \global\c_tabl_tabulate_colorspan\zerocount
-% \global\c_tabl_tabulate_column\constantnumber\c_tabl_tabulate_columns
-% \tabl_tabulate_hook_g
-% \tabl_tabulate_setups_check % unexpandable
-% \tabl_tabulate_hook_check % unexpandable
-% \ifzeropt\d_tabl_tabulate_width
-% \ifcase\c_tabl_tabulate_modus\else
-% \settrue\c_tabl_tabulate_automode
-% \fi
-% \else
-% \ifcase\c_tabl_tabulate_modus
-% \hbox to
-% \else
-% \hsize
-% \fi
-% \the\d_tabl_tabulate_width
-% \fi
-% \bgroup
-% \tabl_tabulate_bbskip
-% \bgroup % we cannot combine the if because a cell may have only one ##
-% \tabl_tabulate_hook_b
-% \c_tabl_tabulate_align\constantnumber\c_tabl_tabulate_align % needed in tag passing
-% \ifx\m_tabl_tabulate_alignment\empty \else
-% \spac_align_use_now{\m_tabl_tabulate_alignment}%
-% \fi
-% \noexpand\dostarttagged\noexpand\t!tabulatecell\noexpand\empty
-% \noexpand\dotagtabulatecell
-% \noexpand#1%
-% \ifconditional\c_tabl_tabulate_reshape
-% \tabl_tabulate_shaped_par_begin
-% \fi
-% \dotagtabulatesignal % empty cells .. todo (can be removed as soon as build)
-% \noexpand\ifnum\noexpand\c_tabl_tabulate_type=\plusone\noexpand\else
-% \the\t_tabl_tabulate_bmath % maybe later? can interfere with char 0
-% \the\t_tabl_tabulate_font
-% \the\t_tabl_tabulate_settings
-% \the\t_tabl_tabulate_before
-% \ifx\m_tabl_tabulate_text_color\empty
-% \expandafter\gobbleoneargument
-% \else
-% \expandafter\dofastcoloractivation
-% \fi\m_tabl_tabulate_text_color
-% \noexpand\fi
-% % grouping needs to be outside macros (or expandable), nice test
-% % example \NC \string \aligntab \NC which will fail otherwise (mk)
-% \bgroup
-% \tabl_tabulate_entry_before
-% \alignmark\alignmark
-% \tabl_tabulate_entry_after
-% \egroup
-% \noexpand\ifnum\noexpand\c_tabl_tabulate_type=\plusone\noexpand\else
-% \the\t_tabl_tabulate_after
-% \the\t_tabl_tabulate_emath
-% \noexpand\fi
-% \ifconditional\c_tabl_tabulate_reshape
-% \tabl_tabulate_shaped_par_end
-% \fi
-% \noexpand#2%
-% \tabl_tabulate_hook_e
-% \egroup
-% \egroup
-% \aligntab
-% \noexpand\dostoptagged
-% \tabl_tabulate_inject_post_skip{\the\dimexpr\s_tabl_tabulate_post}% get rid of plus
-% \alignmark\alignmark
-% }}%
-% \t_tabl_tabulate_dummy\expandafter{\the\t_tabl_tabulate_dummy\NC}%
-% \s_tabl_tabulate_pre.5\d_tabl_tabulate_unit\relax
-% \ifnum\c_tabl_tabulate_columns<\numexpr\c_tabl_tabulate_nofcolumns-\plusone\relax
-% \s_tabl_tabulate_post\s_tabl_tabulate_pre
-% \else
-% \s_tabl_tabulate_post\zeropoint
-% \fi
-% %\let\gettabulateexit\dogettabulateexit % still needed ?
-% \d_tabl_tabulate_width\zeropoint}
-
\def\tabl_tabulate_set_preamble_step#1#2% only makes sense for many tabulates
{\etoksapp\t_tabl_tabulate_preamble{%
\tabl_tabulate_check_local_vrule_thickness\constantdimenargument\d_tabl_tabulate_vrulethickness
@@ -887,24 +798,10 @@
\tabl_tabulate_set_width_simple
\fi}
-% \def\tabl_tabulate_set_last_entry#1% rulespec
-% {\global\let\m_tabl_tabulate_vrule_color\empty
-% \rawprocesscommalist[#1]\tabl_tabulate_set_vrule_command
-% \ifx\currenttabulationtrulespec\empty
-% \global\d_tabl_tabulate_vrulethickness\zeropoint
-% \else
-% \global\d_tabl_tabulate_vrulethickness\d_tabl_tabulate_vrulethickness_default
-% \rawprocesscommalist[#1]\tabl_tabulate_set_vrule_command
-% \fi
-% \normalexpanded{\t_tabl_tabulate_preamble{\the\t_tabl_tabulate_preamble
-% \tabl_tabulate_check_local_vrule_thickness\constantdimenargument\d_tabl_tabulate_vrulethickness
-% \tabl_tabulate_check_local_vrule_color\constantemptyargument\m_tabl_tabulate_vrule_color
-% \tabl_tabulate_column_vrule_inject}}%
-% }
-
\def\tabl_tabulate_set_last_entry#1% rulespec
- {\global\let\m_tabl_tabulate_vrule_color\empty
- \rawprocesscommalist[#1]\tabl_tabulate_set_vrule_command
+ {\global\let\m_tabl_tabulate_color\empty
+ \global\let\m_tabl_tabulate_vrule_color\empty
+ \edef\currenttabulationtrulespec{#1}%
\ifx\currenttabulationtrulespec\empty
\global\d_tabl_tabulate_vrulethickness\zeropoint
\else
@@ -914,8 +811,7 @@
\etoksapp\t_tabl_tabulate_preamble{%
\tabl_tabulate_check_local_vrule_thickness\constantdimenargument\d_tabl_tabulate_vrulethickness
\tabl_tabulate_check_local_vrule_color\constantemptyargument\m_tabl_tabulate_vrule_color
- \tabl_tabulate_column_vrule_inject}%
- }
+ \tabl_tabulate_column_vrule_inject}}
\let\settabulateentry \tabl_tabulate_set_entry % used at the lua end
\let\settabulatelastentry\tabl_tabulate_set_last_entry % used at the lua end
@@ -2153,166 +2049,6 @@
{\setlocalhsize
\hsize\localhsize}
-% \def\tabl_tabulate_process
-% {\c_tabl_tabulate_pass\plusone
-% \tabl_tabulate_check_full_content
-% \edef\v_tabl_tabulate_align{\executeifdefined{\??tabulatealigning\p_align}0}%
-% \s_tabl_tabulate_first.5\d_tabl_tabulate_unit
-% \s_tabl_tabulate_last\s_tabl_tabulate_first
-% \s_tabl_tabulate_pre\zeropoint
-% \s_tabl_tabulate_post\s_tabl_tabulate_first % was: \zeropoint
-% \global\c_tabl_tabulate_columns\zerocount
-% \global\c_tabl_tabulate_nofauto\zerocount
-% \global\c_tabl_tabulate_noflines\zerocount
-% \c_tabl_tabulate_totalnoflines\zerocount
-% \c_tabl_tabulate_minusnoflines\zerocount
-% \global\d_tabl_tabulate_width_p\zeropoint
-% \global\d_tabl_tabulate_width_w\zeropoint
-% \global\setfalse\c_tabl_tabulate_equal
-% \tabl_tabulate_pheight_reset
-% \tabskip\zeropoint
-% \ifinsidesplitfloat
-% \donetrue
-% \else\ifinsidefloat
-% \donefalse
-% \else
-% \donetrue
-% \fi\fi
-% \ifdone
-% \global\c_tabl_tabulate_repeathead\executeifdefined{\??tabulateheader\tabulationparameter\c!header}\zerocount
-% \else
-% \global\c_tabl_tabulate_repeathead\zerocount
-% \fi
-% %
-% \the\t_tabl_tabulate_initializers_first % collect more here
-% %
-% \glet\tabl_tabulate_flush_collected\empty
-% \ifdim\d_tabl_tabulate_margin>\zeropoint
-% \t_tabl_tabulate_preamble
-% {\aligntab
-% \tabl_tabulate_flush_indent
-% % \global\advance\c_tabl_tabulate_noflines\plusone
-% \strut
-% \alignmark\alignmark
-% \tabskip\d_tabl_tabulate_margin
-% \strut
-% \aligntab
-% \alignmark\alignmark
-% \tabskip\zeropoint}%
-% \else
-% \t_tabl_tabulate_preamble
-% {\aligntab
-% \tabl_tabulate_flush_indent
-% % \global\advance\c_tabl_tabulate_noflines\plusone
-% \strut
-% \alignmark\alignmark
-% \aligntab
-% \alignmark\alignmark
-% \tabskip\zeropoint}%
-% \fi
-% \d_tabl_tabulate_width\zeropoint
-% % these counters are set at the lua end
-% \c_tabl_tabulate_nofcolumns \zerocount
-% \c_tabl_tabulate_has_rule_spec_first\zerocount
-% \c_tabl_tabulate_has_rule_spec_last \zerocount
-% \clf_presettabulate{\detokenizedtabulationparameter\c!format}%
-% %
-% % \edef\totaltabulatecolumns{\the\numexpr3*\c_tabl_tabulate_columns+\plusfour}%
-% \d_tabl_tabulate_width\zeropoint
-% \tabl_tabulate_initialize_boxes\c_tabl_tabulate_columns
-% \t_tabl_tabulate_preamble\expandafter{\the\t_tabl_tabulate_preamble
-% \aligntab\alignmark\alignmark
-% \global\advance\c_tabl_tabulate_column\plusone % maybe just set it already
-% }%
-% \t_tabl_tabulate_dummy\expandafter{\the\t_tabl_tabulate_dummy
-% \NC\unskip\unskip\crcr\tabl_tabulate_flush_collected % no count
-% }%
-% \global\c_tabl_tabulate_column\zerocount
-% \tabl_tabulate_pheight_reset
-% \glet\tabl_tabulate_hook\tabl_tabulate_hook_yes
-% \ifx\p_indenting\v!no
-% \forgetparindent
-% \fi
-% \ifinsidefloat
-% \d_tabl_tabulate_indent\zeropoint
-% \else
-% \tabl_tabulate_set_local_hsize
-% \fi
-% \dontcomplain
-% \forgetall % hm, interference with preceding \forgetparindent probably bug, to be solved
-% \everypar\everytabulatepar
-% \setbox0\vbox % outside \if because of line counting
-% {\notesenabledfalse
-% \d_tabl_tabulate_indent\zeropoint
-% \settrialtypesetting % very important
-% \expandafter\halign\expandafter{\the\t_tabl_tabulate_preamble\crcr\tabl_tabulate_insert_content\crcr}}%
-% \ifnum\c_tabl_tabulate_nofauto>\zerocount
-% % so, even if the natural size is larger, in the final run, we force the calculated width
-% \d_tabl_tabulate_width\dimexpr\hsize-\wd0-\d_tabl_tabulate_width_p-\d_tabl_tabulate_width_w\relax
-% \ifnum\c_tabl_tabulate_nofauto>\zerocount
-% \divide\d_tabl_tabulate_width \c_tabl_tabulate_nofauto\relax
-% \fi
-% \fi
-% \ifconditional\c_tabl_tabulate_split
-% \splittopskip\strutht
-% \glet\tabl_tabulate_flush_collected_indeed\empty
-% \glet\tabl_tabulate_flush_collected\tabl_tabulate_flush_second
-% \fi
-% \c_tabl_tabulate_totalnoflines\c_tabl_tabulate_noflines
-% \c_tabl_tabulate_minusnoflines\numexpr\c_tabl_tabulate_noflines+\minusone\relax
-% \global\c_tabl_tabulate_noflines\zerocount
-% %
-% \c_tabl_tabulate_pass\plustwo % final pass
-% \the\t_tabl_tabulate_initializers_second % collect more here
-% %
-% \ifx\p_line\v!line
-% \let\HL\HR
-% \let\tabulateautoline\tabulateautorule
-% \let\tabulateline\tabulaterule
-% \fi
-% %
-% \ifcase\c_tabl_tabulate_repeathead
-% \ifinsidesplitfloat
-% \global\setbox\b_tabl_tabulate\vbox \bgroup
-% \else
-% \startframedcontent[\tabulationparameter\c!frame]%
-% \fi
-% \else
-% \global\setbox\b_tabl_tabulate\vbox \bgroup
-% \fi
-% %
-% \dostarttaggedchained\t!tabulate\empty\??tabulation
-% \dostarttagged\t!tabulaterow\empty
-% \setfalse\inhibitmargindata % new per 2012.06.13 ... really needed
-% \everycr\expandafter{\the\everycr\dostoptagged\dostarttagged\t!tabulaterow\empty}%
-% \expandafter\halign\expandafter{\the\t_tabl_tabulate_preamble\crcr\tabl_tabulate_insert_content\crcr}%
-% \dostoptagged
-% \dostoptagged
-% \ifhmode\par\prevdepth\strutdp\fi % nog eens beter, temporary hack
-% \ifx\p_distance\v!grid
-% \vskip-\strutdp % experimental tm-prikkels
-% \fi
-% %
-% \ifcase\c_tabl_tabulate_repeathead
-% \ifinsidesplitfloat
-% \egroup % box
-% \egroup % settings
-% \tabl_split_box\b_tabl_tabulate
-% \else
-% \stopframedcontent
-% \egroup
-% \fi
-% \else
-% \egroup % box
-% \egroup % settings
-% \tabl_split_box\b_tabl_tabulate
-% \fi
-% %
-% \ifinsidefloat \else
-% \tabulationparameter\c!after
-% \fi
-% \egroup} % whole thing
-
\def\tabl_tabulate_process
{\c_tabl_tabulate_pass\plusone
\tabl_tabulate_check_full_content
@@ -2445,7 +2181,7 @@
\dostarttagged\t!tabulaterow\empty
\setfalse\inhibitmargindata % new per 2012.06.13 ... really needed
\everycr\expandafter{\the\everycr\dostoptagged\dostarttagged\t!tabulaterow\empty}%
-% \toksapp\everycr{\dostoptagged\dostarttagged\t!tabulaterow\empty}%
+ % \toksapp\everycr{\dostoptagged\dostarttagged\t!tabulaterow\empty}%
\expandafter\halign\expandafter{\the\t_tabl_tabulate_preamble\crcr\tabl_tabulate_insert_content\crcr}%
\dostoptagged
\dostoptagged
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 35169f547..39ae24d0d 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/31/16 09:55:34
+-- merge date : 03/31/16 19:47:51
do -- begin closure to overcome local limits and interference
diff --git a/tex/generic/context/luatex/luatex-pdf.tex b/tex/generic/context/luatex/luatex-pdf.tex
index e38f77c4c..81eb872ab 100644
--- a/tex/generic/context/luatex/luatex-pdf.tex
+++ b/tex/generic/context/luatex/luatex-pdf.tex
@@ -91,10 +91,6 @@
\protected\gdef\pdfmapline {\pdfextension mapline }
\protected\gdef\pdftrailer {\pdfextension trailer }
\protected\gdef\pdfglyphtounicode {\pdfextension glyphtounicode }
- \protected\gdef\pdfsuppressoptionalinfo {\pdfextension suppressoptionalinfo }
- \global \let \pdfsuppressptexinfo \pdfsuppressoptionalinfo
- \protected\gdef\pdfinfoid {\pdfextension infoid }
- \protected\gdef\pdfinfoomitdate {\pdfextension suppressoptionalinfo \numexpr32+64\relax}
\chardef\pdfnofullbanner = 1
\chardef\pdfnofilename = 2
@@ -161,6 +157,11 @@
\xdef\pdfxformresources {\pdfvariable xformresources}
\xdef\pdfpkmode {\pdfvariable pkmode}
+ \xdef\pdfsuppressoptionalinfo {\pdfvariable suppressoptionalinfo }
+ \global\let\pdfsuppressptexinfo \pdfsuppressoptionalinfo
+ \xdef\pdftrailerid {\pdfvariable trailerid }
+ \xdef\pdfinfoomitdate {\pdfvariable suppressoptionalinfo \numexpr32+64\relax}
+
% initializations
\global\pdfcompresslevel 9