From d04b4e27d9dcfe3a245b83b2ea7885c95e57b2ca Mon Sep 17 00:00:00 2001
From: Context Git Mirror Bot <phg42.2a@gmail.com>
Date: Fri, 21 Aug 2015 20:15:06 +0200
Subject: 2015-08-21 19:59:00

---
 tex/context/base/attr-eff.mkiv                     |   2 +-
 tex/context/base/back-exp.lua                      |  16 +++---
 tex/context/base/back-exp.mkiv                     |  13 ++++-
 tex/context/base/chem-str.mkiv                     |   6 +-
 tex/context/base/cont-new.mkiv                     |   2 +-
 tex/context/base/context-version.pdf               | Bin 4207 -> 4208 bytes
 tex/context/base/context.mkiv                      |   2 +-
 tex/context/base/font-gds.lua                      |  26 ++++-----
 tex/context/base/font-ots.lua                      |   1 -
 tex/context/base/lpdf-mis.lua                      |  52 +++++++++++------
 tex/context/base/luat-cbk.lua                      |   2 +-
 tex/context/base/mult-def.mkiv                     |   5 ++
 tex/context/base/page-lay.mkiv                     |   8 +++
 tex/context/base/scrn-pag.lua                      |   4 ++
 tex/context/base/scrn-pag.mkvi                     |  64 +++++++++++++++++++++
 tex/context/base/status-files.pdf                  | Bin 24443 -> 24435 bytes
 tex/context/base/status-lua.pdf                    | Bin 255545 -> 255521 bytes
 tex/context/base/strc-con.mkvi                     |   4 +-
 tex/context/base/strc-des.mkvi                     |   2 -
 tex/context/base/strc-not.mkvi                     |   2 +
 tex/context/base/type-imp-libertine.mkiv           |  17 +++---
 tex/context/base/typo-bld.lua                      |  25 +++++---
 tex/context/base/typo-mar.lua                      |   1 -
 tex/generic/context/luatex/luatex-fonts-merged.lua |   2 +-
 24 files changed, 186 insertions(+), 70 deletions(-)

diff --git a/tex/context/base/attr-eff.mkiv b/tex/context/base/attr-eff.mkiv
index bec8687ea..859814ebc 100644
--- a/tex/context/base/attr-eff.mkiv
+++ b/tex/context/base/attr-eff.mkiv
@@ -29,7 +29,7 @@
 
 \appendtoks
     \edef\p_method{\effectparameter\c!method}%
-    \ifx\p_method\v!method
+    \ifx\p_method\v!command
         \setuxvalue{\e!start\currenteffect}{\starteffect[#1]}%
         \setuxvalue{\e!stop \currenteffect}{\stopeffect}%
     \fi
diff --git a/tex/context/base/back-exp.lua b/tex/context/base/back-exp.lua
index 24b1d9457..23940d2ee 100644
--- a/tex/context/base/back-exp.lua
+++ b/tex/context/base/back-exp.lua
@@ -750,13 +750,13 @@ end
 
 do
 
-    -- is this referencing still needed?
-
     local descriptions = { }
     local symbols      = { }
     local linked       = { }
 
-    function structurestags.setdescription(tag,n) -- needs checking (is tag needed)
+    -- we could move the notation itself to the first reference (can be an option)
+
+    function structurestags.setnotation(tag,n) -- needs checking (is tag needed)
         -- we can also use the internals hash or list
         local nd = structures.notes.get(tag,n)
         if nd then
@@ -765,7 +765,7 @@ do
         end
     end
 
-    function structurestags.setdescriptionsymbol(tag,n) -- needs checking (is tag needed)
+    function structurestags.setnotationsymbol(tag,n) -- needs checking (is tag needed)
         local nd = structures.notes.get(tag,n) -- todo: use listdata instead
         if nd then
             local references = nd.references
@@ -3658,14 +3658,14 @@ implement {
 }
 
 implement {
-    name      = "settagdescription",
-    actions   = structurestags.setdescription,
+    name      = "settagnotation",
+    actions   = structurestags.setnotation,
     arguments = { "string", "integer" }
 }
 
 implement {
-    name      = "settagdescriptionsymbol",
-    actions   = structurestags.setdescriptionsymbol,
+    name      = "settagnotationsymbol",
+    actions   = structurestags.setnotationsymbol,
     arguments = { "string", "integer" }
 }
 
diff --git a/tex/context/base/back-exp.mkiv b/tex/context/base/back-exp.mkiv
index 9a932043f..6a8177faf 100644
--- a/tex/context/base/back-exp.mkiv
+++ b/tex/context/base/back-exp.mkiv
@@ -159,17 +159,24 @@
        \fi}%
 \to \everyenableelements
 
+%     \appendtoks
+%         \unexpanded\def\dotagsetdescription
+%           {\iftrialtypesetting\else
+%              \clf_settagdescription{\currentdescription}\currentdescriptionnumberentry\relax
+%            \fi}%
+%     \to \everyenableelements
+
 \appendtoks
-    \unexpanded\def\dotagsetdescription
+    \unexpanded\def\dotagsetnotation
       {\iftrialtypesetting\else
-         \clf_settagdescription{\currentdescription}\currentdescriptionnumberentry\relax
+        \clf_settagnotation{\currentnote}\currentnotenumber\relax
        \fi}%
 \to \everyenableelements
 
 \appendtoks
     \unexpanded\def\dotagsetnotesymbol
       {\iftrialtypesetting\else
-         \clf_settagdescriptionsymbol{\currentnote}\currentnotenumber\relax
+         \clf_settagnotationsymbol{\currentnote}\currentnotenumber\relax
        \fi}%
 \to \everyenableelements
 
diff --git a/tex/context/base/chem-str.mkiv b/tex/context/base/chem-str.mkiv
index f18b422f2..cdbba6e2a 100644
--- a/tex/context/base/chem-str.mkiv
+++ b/tex/context/base/chem-str.mkiv
@@ -54,9 +54,11 @@
 \installcorenamespace{chemicalframed}
 \installcorenamespace{chemicalsize}
 
-\installsimplecommandhandler \??chemical {chemical} \??chemical % no \define...
+% \installsimplecommandhandler \??chemical {chemical} \??chemical % no \define...
+\installcommandhandler \??chemical {chemical} \??chemical % no \define...
 
-\let\setupchemicals\setupchemical
+\let\setupchemicals \setupchemical
+\let\definechemicals\definechemical
 
 %D We use a dedicated framed macro instead of inheriting one. This is both
 %D a historical and practical reason (like shared keys with different meaning
diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv
index 79f735968..6da086f23 100644
--- a/tex/context/base/cont-new.mkiv
+++ b/tex/context/base/cont-new.mkiv
@@ -11,7 +11,7 @@
 %C therefore copyrighted by \PRAGMA. See mreadme.pdf for
 %C details.
 
-\newcontextversion{2015.08.13 19:33}
+\newcontextversion{2015.08.21 19:57}
 
 %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/context-version.pdf b/tex/context/base/context-version.pdf
index 6d45b9ee1..978bb525b 100644
Binary files a/tex/context/base/context-version.pdf and b/tex/context/base/context-version.pdf differ
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index 42e1268f8..e161d8055 100644
--- a/tex/context/base/context.mkiv
+++ b/tex/context/base/context.mkiv
@@ -39,7 +39,7 @@
 %D up and the dependencies are more consistent.
 
 \edef\contextformat {\jobname}
-\edef\contextversion{2015.08.13 19:33}
+\edef\contextversion{2015.08.21 19:57}
 \edef\contextkind   {beta}
 
 %D For those who want to use this:
diff --git a/tex/context/base/font-gds.lua b/tex/context/base/font-gds.lua
index 7e53ef049..9fbe1e844 100644
--- a/tex/context/base/font-gds.lua
+++ b/tex/context/base/font-gds.lua
@@ -784,23 +784,21 @@ function fontgoodies.designsizes.register(name,size,specification)
 end
 
 function fontgoodies.designsizes.filename(name,spec,size) -- returns nil of no match
-    if spec and spec ~= "" then
-        local data = designdata[lower(name)]
-        if data then
-            if spec == "default" then
-                return data.default
-            elseif spec == "auto" then
-                local ranges = data.ranges
-                if ranges then
-                    for i=1,#ranges do
-                        local r = ranges[i]
-                        if r[1] >= size then -- todo: rounding so maybe size - 100
-                            return r[2]
-                        end
+    local data = designdata[lower(name)]
+    if data then
+        if not spec or spec == "" or spec == "default" then
+            return data.default
+        elseif spec == "auto" then
+            local ranges = data.ranges
+            if ranges then
+                for i=1,#ranges do
+                    local r = ranges[i]
+                    if r[1] >= size then -- todo: rounding so maybe size - 100
+                        return r[2]
                     end
                 end
-                return data.default or (ranges and ranges[#ranges][2])
             end
+            return data.default or (ranges and ranges[#ranges][2])
         end
     end
 end
diff --git a/tex/context/base/font-ots.lua b/tex/context/base/font-ots.lua
index 1f6153e63..01a4b7c24 100644
--- a/tex/context/base/font-ots.lua
+++ b/tex/context/base/font-ots.lua
@@ -2808,7 +2808,6 @@ local function featuresprocessor(head,font,attr)
                             end
                             if a then
                                 local char = getchar(start)
-                                local lookupcache = step.coverage
                                 for i=1,nofsteps do
                                     local step = steps[i]
                                     local lookupcache = step.coverage
diff --git a/tex/context/base/lpdf-mis.lua b/tex/context/base/lpdf-mis.lua
index a1b12d8c0..e4f5055a4 100644
--- a/tex/context/base/lpdf-mis.lua
+++ b/tex/context/base/lpdf-mis.lua
@@ -257,6 +257,7 @@ local pagespecs = {
 }
 
 local pagespec, topoffset, leftoffset, height, width, doublesided = "default", 0, 0, 0, 0, false
+local cropoffset, bleedoffset, trimoffset, artoffset = 0, 0, 0, 0
 
 local pdfpaperheight = tex.pdfpageheight
 local pdfpaperwidth  = tex.pdfpagewidth
@@ -273,11 +274,17 @@ function codeinjections.setupcanvas(specification)
         texset('global','pdfpagewidth',paperwidth)
         pdfpaperwidth = paperwidth
     end
-    pagespec    = specification.mode       or pagespec
-    topoffset   = specification.topoffset  or 0
-    leftoffset  = specification.leftoffset or 0
-    height      = specification.height     or pdfpaperheight
-    width       = specification.width      or pdfpaperwidth
+    pagespec    = specification.mode        or pagespec
+    topoffset   = specification.topoffset   or 0
+    leftoffset  = specification.leftoffset  or 0
+    height      = specification.height      or pdfpaperheight
+    width       = specification.width       or pdfpaperwidth
+    --
+    cropoffset  = specification.cropoffset  or 0
+    trimoffset  = cropoffset  - (specification.trimoffset  or 0)
+    bleedoffset = trimoffset  - (specification.bleedoffset or 0)
+    artoffset   = bleedoffset - (specification.artoffset   or 0)
+    --
     if paperdouble ~= nil then
         doublesided = paperdouble
     end
@@ -332,24 +339,33 @@ end
 
 -- temp hack: the mediabox is not under our control and has a precision of 4 digits
 
-local factor = number.dimenfactors.bp
+local factor  = number.dimenfactors.bp
+local f_value = formatters["%0.4F"]
 
 local function boxvalue(n) -- we could share them
-    return pdfverbose(formatters["%0.4F"](factor * n))
+    return pdfverbose(f_value(factor * n))
 end
 
 local function pagespecification()
-    local pageheight = pdfpaperheight
-    local box = pdfarray { -- can be cached
-        boxvalue(leftoffset),
-        boxvalue(pageheight+topoffset-height),
-        boxvalue(width-leftoffset),
-        boxvalue(pageheight-topoffset),
-    }
-    addtopageattributes("CropBox",box) -- mandate for rendering
-    addtopageattributes("TrimBox",box) -- mandate for pdf/x
- -- addtopageattributes("BleedBox",box)
- -- addtopageattributes("ArtBox",box)
+    local llx = leftoffset
+    local lly = pdfpaperheight + topoffset - height
+    local urx = width - leftoffset
+    local ury = pdfpaperheight - topoffset
+    -- boxes can be cached
+    local function extrabox(WhatBox,offset,always)
+        if offset ~= 0 or always then
+            addtopageattributes(WhatBox, pdfarray {
+                boxvalue(llx + offset),
+                boxvalue(lly + offset),
+                boxvalue(urx - offset),
+                boxvalue(ury - offset),
+            })
+        end
+    end
+    extrabox("CropBox",cropoffset,true) -- mandate for rendering
+    extrabox("TrimBox",trimoffset,true) -- mandate for pdf/x
+    extrabox("BleedBox",bleedoffset)    -- optional
+    extrabox("ArtBox",artoffset)        -- optional
 end
 
 lpdf.registerpagefinalizer(pagespecification,"page specification")
diff --git a/tex/context/base/luat-cbk.lua b/tex/context/base/luat-cbk.lua
index 65319c333..5e2d0e0cb 100644
--- a/tex/context/base/luat-cbk.lua
+++ b/tex/context/base/luat-cbk.lua
@@ -254,7 +254,7 @@ if trace_calls then
                 t[#t+1] = format("%s -> %s",name,n)
             end
         end
-        return t
+        return concat(t," ")
     end)
 end
 
diff --git a/tex/context/base/mult-def.mkiv b/tex/context/base/mult-def.mkiv
index 058bc68db..8e51eb03e 100644
--- a/tex/context/base/mult-def.mkiv
+++ b/tex/context/base/mult-def.mkiv
@@ -73,6 +73,11 @@
 \def\c!keeptogether      {keeptogether}
 \def\c!viewerprefix      {viewerprefix}
 
+\def\c!cropoffset        {cropoffset}  % bah
+\def\c!trimoffset        {trimoffset}  % bah bah
+\def\c!bleedoffset       {bleedoffset} % bah bah
+\def\c!artoffset         {artoffset}   % bah bah bah bah
+
 \def\c!index             {index} % not a register but a number (of a glyph)
 \def\c!character         {character}
 
diff --git a/tex/context/base/page-lay.mkiv b/tex/context/base/page-lay.mkiv
index d1328bb6b..9fb60401d 100644
--- a/tex/context/base/page-lay.mkiv
+++ b/tex/context/base/page-lay.mkiv
@@ -868,32 +868,40 @@
 \appendtoks \page_layouts_check_next \to \everyaftershipout
 
 \newconditional\c_page_layouts_location_is_set
+\newconditional\c_page_layouts_location_is_middle
 
 \def\page_layouts_location_reset % we start in the left top and mirror right pages
   {\setfalse\c_page_layouts_location_is_set
+   \setfalse\c_page_layouts_location_is_middle
    \let\v_page_target_left_fill  \relax
    \let\v_page_target_right_fill \hss % ? \relax
    \let\v_page_target_top_fill   \relax
    \let\v_page_target_bottom_fill\vss} % \relax}
 
 \setvalue{\??layoutlocation\v!right      }{\settrue\c_page_layouts_location_is_set
+                                           \setfalse\c_page_layouts_location_is_middle
                                            \let\v_page_target_left_fill  \hss
                                            \let\v_page_target_right_fill \relax}
 \setvalue{\??layoutlocation\v!left       }{\settrue\c_page_layouts_location_is_set
+                                           \setfalse\c_page_layouts_location_is_middle
                                            \let\v_page_target_left_fill  \relax
                                            \let\v_page_target_right_fill \hss}
 \setvalue{\??layoutlocation\v!bottom     }{\settrue\c_page_layouts_location_is_set
+                                           \setfalse\c_page_layouts_location_is_middle
                                            \let\v_page_target_top_fill   \vss
                                            \let\v_page_target_bottom_fill\relax}
 \setvalue{\??layoutlocation\v!top        }{\settrue\c_page_layouts_location_is_set
+                                           \setfalse\c_page_layouts_location_is_middle
                                            \let\v_page_target_top_fill   \relax
                                            \let\v_page_target_bottom_fill\vss}
 \setvalue{\??layoutlocation\v!middle     }{\settrue\c_page_layouts_location_is_set
+                                           \settrue\c_page_layouts_location_is_middle
                                            \let\v_page_target_left_fill  \hss
                                            \let\v_page_target_right_fill \hss
                                            \let\v_page_target_top_fill   \vss
                                            \let\v_page_target_bottom_fill\vss}
 \setvalue{\??layoutlocation\empty        }{\setfalse\c_page_layouts_location_is_set % default also signal to scrn_
+                                           \setfalse\c_page_layouts_location_is_middle
                                            \let\v_page_target_right_fill \hss
                                            \let\v_page_target_bottom_fill\hss}
 \setvalue{\??layoutlocation\v!doublesided}{\settrue \c_page_target_print_doublesided}
diff --git a/tex/context/base/scrn-pag.lua b/tex/context/base/scrn-pag.lua
index 4d7b388ee..dba5b4786 100644
--- a/tex/context/base/scrn-pag.lua
+++ b/tex/context/base/scrn-pag.lua
@@ -36,6 +36,10 @@ implement {
             { "height", "dimen" },
             { "paperwidth", "dimen" },
             { "paperheight", "dimen" },
+            { "cropoffset", "dimen" },
+            { "bleedoffset", "dimen" },
+            { "artoffset", "dimen" },
+            { "trimoffset", "dimen" },
         }
     }
 }
diff --git a/tex/context/base/scrn-pag.mkvi b/tex/context/base/scrn-pag.mkvi
index 3dfcd65c5..a16b90c6d 100644
--- a/tex/context/base/scrn-pag.mkvi
+++ b/tex/context/base/scrn-pag.mkvi
@@ -30,6 +30,10 @@
 \newdimen\canvastopoffset
 \newdimen\canvasmaxwidth
 \newdimen\canvasmaxheight
+\newdimen\canvascropoffset
+\newdimen\canvastrimoffset
+\newdimen\canvasbleedoffset
+\newdimen\canvasartoffset
 
 \newconditional\c_scrn_canvas_tight_page
 
@@ -39,9 +43,11 @@
    \edef\currentinteractionscreenheight{\interactionscreenparameter\c!height}%
    \canvasbackoffset\backspace
    \canvastopoffset\topspace
+   \donetrue
    \ifx\currentinteractionscreenwidth\v!max
      \global\canvaswidth\printpaperwidth
    \else\ifx\currentinteractionscreenwidth\v!fit
+     \donefalse
      \global\canvaswidth\dimexpr
        \leftcombitotal
      + \makeupwidth
@@ -52,6 +58,7 @@
         \relax
      \relax
    \else\ifx\currentinteractionscreenwidth\v!tight
+     \donefalse
      \ifdim\backspace>\canvaswidth
        \ifdim\backspace>\zeropoint\relax
          \global\advance\canvasbackoffset -\canvaswidth
@@ -66,11 +73,13 @@
         \relax
      \relax
    \else
+     \donefalse
      \global\canvaswidth\currentinteractionscreenwidth
    \fi\fi\fi
    \ifx\currentinteractionscreenheight\v!max
      \global\canvasheight\printpaperheight
    \else\ifx\currentinteractionscreenheight\v!fit
+     \donefalse
      \global\canvasheight\dimexpr
        \topheight
      + \topdistance
@@ -83,6 +92,7 @@
         \relax
      \relax
    \else\ifx\currentinteractionscreenheight\v!tight
+     \donefalse
      \global\canvasheight\dimexpr\topheight+\topdistance\relax
      \ifdim\topspace>\canvasheight
        \ifdim\topspace>\zeropoint\relax
@@ -99,6 +109,7 @@
         \relax
      \relax
    \else
+     \donefalse
      \global\canvasheight\currentinteractionscreenheight
    \fi\fi\fi
    \ifconditional\c_page_layouts_location_is_set
@@ -111,8 +122,57 @@
      \global\canvasmaxwidth \printpaperwidth
      \global\canvasmaxheight\printpaperheight
    \fi
+   % new:
+   \ifdone
+     \global\canvascropoffset \layoutcropoffset
+     \global\canvastrimoffset \layouttrimoffset
+     \global\canvasbleedoffset\layoutbleedoffset
+     \global\canvasartoffset  \layoutartoffset
+   \else
+     \global\canvascropoffset \zeropoint
+     \global\canvastrimoffset \zeropoint
+     \global\canvasbleedoffset\zeropoint
+     \global\canvasartoffset  \zeropoint
+   \fi
    \endgroup}
 
+\newdimen\layoutcropoffset
+\newdimen\layouttrimoffset
+\newdimen\layoutbleedoffset
+\newdimen\layoutartoffset
+
+\appendtoks
+   \edef\p_cropoffset{\layoutparameter\c!cropoffset}%
+   \ifx\p_cropoffset\v!auto
+     \ifconditional\c_page_layouts_location_is_middle
+       \scratchheight\dimexpr(\printpaperheight-\paperheight)/2\relax
+       \scratchwidth \dimexpr(\printpaperwidth -\paperwidth )/2\relax
+       \layoutcropoffset\ifdim\scratchheight>\scratchwidth\scratchheight\else\scratchwidth\fi
+       \layouttrimoffset \layoutparameter\c!trimoffset
+       \layoutbleedoffset\layoutparameter\c!bleedoffset
+       \layoutartoffset  \layoutparameter\c!artoffset
+     \else
+       \writestatus\m!system{auto crop etc only supported when location=middle}%
+       \layoutcropoffset \zeropoint
+       \layouttrimoffset \zeropoint
+       \layoutbleedoffset\zeropoint
+       \layoutartoffset  \zeropoint
+     \fi
+   \else
+     \layoutcropoffset \layoutparameter\c!cropoffset
+     \layouttrimoffset \layoutparameter\c!trimoffset
+     \layoutbleedoffset\layoutparameter\c!bleedoffset
+     \layoutartoffset  \layoutparameter\c!artoffset
+   \fi
+   \relax
+\to \everysetuplayout
+
+\setuplayout
+  [\c!cropoffset=\zeropoint,
+   \c!trimoffset=\zeropoint,
+   \c!bleedoffset=\zeropoint,
+   \c!artoffset=\zeropoint]
+
 % test the next when something is changed here:
 %
 % \setuppapersize[A5][A3]  \showframe
@@ -152,6 +212,10 @@
         height      \canvasheight
         paperwidth  \canvasmaxwidth
         paperheight \canvasmaxheight
+        cropoffset  \canvascropoffset
+        trimoffset  \canvastrimoffset
+        bleedoffset \canvasbleedoffset
+        artoffset   \canvasartoffset
    \relax
   %\global\let\scrn_canvas_synchronize_simple \relax
    \global\let\scrn_canvas_synchronize_complex\relax}
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index 9fd48c870..c75d2d3ec 100644
Binary files a/tex/context/base/status-files.pdf and b/tex/context/base/status-files.pdf differ
diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf
index ce53e6064..d2eb6d76b 100644
Binary files a/tex/context/base/status-lua.pdf and b/tex/context/base/status-lua.pdf differ
diff --git a/tex/context/base/strc-con.mkvi b/tex/context/base/strc-con.mkvi
index 36ca5314f..9686903fc 100644
--- a/tex/context/base/strc-con.mkvi
+++ b/tex/context/base/strc-con.mkvi
@@ -184,7 +184,7 @@
 %D Also, passing the title as argument has some history so we need to keep that as
 %D well.
 
-\ifdefined\dotagsetconstruction \else \let\dotagsetconstruction\relax \fi
+% \ifdefined\dotagsetconstruction \else \let\dotagsetconstruction\relax \fi
 
 \newtoks\everyconstruction
 
@@ -271,7 +271,7 @@
 
 \unexpanded\setvalue{\??constructionstarthandler\v!construction}% this will be redone (reorganized) .. too much boxing
   {\dostarttaggedchained\t!construction\currentconstruction\currentconstructionhash
-   \dotagsetconstruction
+%    \dotagsetconstruction
    \constructionparameter\c!before
    \begingroup
    \edef\currentconstructionalternative{\constructionparameter\c!alternative}%
diff --git a/tex/context/base/strc-des.mkvi b/tex/context/base/strc-des.mkvi
index 3557000f9..83daba0fe 100644
--- a/tex/context/base/strc-des.mkvi
+++ b/tex/context/base/strc-des.mkvi
@@ -92,8 +92,6 @@
 % start-stop one. Also, passing the title as argument has some
 % history so we need to keep that as well.
 
-\ifdefined\dotagsetdescription \else \let\dotagsetdescription\relax \fi
-
 % \startdescription [reference]                text \stopdescription
 % \startdescription [reference]{title}         text \stopdescription
 % \startdescription [title=,title=,reference=] text \stopdescription
diff --git a/tex/context/base/strc-not.mkvi b/tex/context/base/strc-not.mkvi
index 57ca672d0..761dec0f5 100644
--- a/tex/context/base/strc-not.mkvi
+++ b/tex/context/base/strc-not.mkvi
@@ -22,6 +22,7 @@
 % todo: see if we can now use \insertpenalties (>0 == some left)
 
 \ifdefined\dotagsetnotesymbol \else \let\dotagsetnotesymbol\relax \fi
+\ifdefined\dotagsetnotation   \else \let\dotagsetnotation  \relax \fi
 
 \unexpanded\def\unvboxed {\ifvmode\unvbox \else\box \fi} % will change or used more often
 \unexpanded\def\unvcopied{\ifvmode\unvcopy\else\copy\fi} % will change or used more often
@@ -599,6 +600,7 @@
    % a criterium
  % \strc_notes_interaction_check_display
    \strc_notes_set_reference_attribute_number
+   \dotagsetnotation
    \strc_notes_set_style_color_display\c!headstyle\c!headcolor
    \strc_enumerations_text
    \endgroup}
diff --git a/tex/context/base/type-imp-libertine.mkiv b/tex/context/base/type-imp-libertine.mkiv
index be92c27c7..4620995b9 100644
--- a/tex/context/base/type-imp-libertine.mkiv
+++ b/tex/context/base/type-imp-libertine.mkiv
@@ -11,15 +11,17 @@
 %C therefore copyrighted by \PRAGMA. See mreadme.pdf for
 %C details.
 
+% Linux Libertine O Italic
+
 \starttypescriptcollection[libertine]
 
     \starttypescript [\s!serif] [libertine]
         \definefontsynonym [Libertine-Regular]     [\s!file:linlibertiner]
-        \definefontsynonym [Libertine-Italic]      [\s!file:linlibertineri]
-        \definefontsynonym [Libertine-Slanted]     [\s!file:linlibertinearl]
+        \definefontsynonym [Libertine-Italic]      [\s!file:linlibertineri] % z
+        \definefontsynonym [Libertine-Slanted]     [\s!file:linlibertineri]
         \definefontsynonym [Libertine-Bold]        [\s!file:linlibertinerb]
-        \definefontsynonym [Libertine-BoldItalic]  [\s!file:linlibertinerbi]
-        \definefontsynonym [Libertine-BoldSlanted] [\s!file:linlibertineabl]
+        \definefontsynonym [Libertine-BoldItalic]  [\s!file:linlibertinerbi] % zi
+        \definefontsynonym [Libertine-BoldSlanted] [\s!file:linlibertinerbi]
     \stoptypescript
 
     \starttypescript [\s!serif] [libertine] [\s!name]
@@ -36,10 +38,11 @@
     \starttypescript [\s!sans] [biolinum]
         \setups[\s!font:\s!fallback:\s!sans]
         \definefontsynonym [Biolinum-Regular]     [\s!file:linbiolinumr]
-        \definefontsynonym [Biolinum-Bold]        [\s!file:linbiolinumrb]
         \definefontsynonym [Biolinum-Italic]      [\s!file:linbiolinumri]
-        \definefontsynonym [Biolinum-Slanted]     [\s!file:linbiolinumarl]
-        \definefontsynonym [Biolinum-BoldSlanted] [\s!file:linbiolinumabl]
+        \definefontsynonym [Biolinum-Slanted]     [\s!file:linbiolinumri]
+        \definefontsynonym [Biolinum-Bold]        [\s!file:linbiolinumrb]
+        \definefontsynonym [Biolinum-BoldItalic]  [\s!file:linbiolinumrbo]
+        \definefontsynonym [Biolinum-BoldSlanted] [\s!file:linbiolinumrbo]
     \stoptypescript
 
     \starttypescript [\s!sans] [biolinum] [\s!name]
diff --git a/tex/context/base/typo-bld.lua b/tex/context/base/typo-bld.lua
index 4d0f28d9a..bc3fe6911 100644
--- a/tex/context/base/typo-bld.lua
+++ b/tex/context/base/typo-bld.lua
@@ -217,16 +217,26 @@ end
 
 -- use tex.[sg]etlist
 
+-- check why box is called before after_linebreak .. maybe make categories and
+-- call 'm less
+
+local build_par_codes = {
+    pre_box    = true,
+    box        = true,
+    pre_adjust = true,
+    adjust     = true,
+}
+
 function builders.buildpage_filter(groupcode)
- -- -- this needs checking .. gets called too often
- -- if group_code ~= "after_output" then
- --     if trace_page_builder then
- --         report(groupcode)
- --     end
- --     return nil, false
- -- end
+    -- the next check saves 1% runtime on 1000 tufte pages
+    if build_par_codes[groupcode] then
+        -- also called in vbox .. we really need another callback for these four
+        return nil, false -- can be another action set .. like anchoring for box
+    end
+    --
     local head, done = texlists.contrib_head, false
     if head then
+        -- called quite often ... maybe time to remove timing
         starttiming(builders)
         if trace_page_builder then
             report(groupcode,head)
@@ -239,6 +249,7 @@ function builders.buildpage_filter(groupcode)
 -- tex.setlist("contrib_head",head,head and nodes.tail(head))
         return done and head or true -- no return value needed
     else
+        -- happens quite often
         if trace_page_builder then
             report(groupcode)
         end
diff --git a/tex/context/base/typo-mar.lua b/tex/context/base/typo-mar.lua
index 39ac9e140..9808c55c7 100644
--- a/tex/context/base/typo-mar.lua
+++ b/tex/context/base/typo-mar.lua
@@ -681,7 +681,6 @@ local function inject(parent,head,candidate)
     end
     setfield(box,"shift",shift)
     setfield(box,"width",0)
--- print(head)
     if not head then
         head = box
     elseif getid(head) == whatsit_code and getsubtype(head) == localpar_code then
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 5a92ee804..cc522eb5c 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 : luatex-fonts-merged.lua
 -- parent file : luatex-fonts.lua
--- merge date  : 08/13/15 19:33:02
+-- merge date  : 08/21/15 19:57:22
 
 do -- begin closure to overcome local limits and interference
 
-- 
cgit v1.2.3