summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tex/context/base/cont-new.mkiv2
-rw-r--r--tex/context/base/context-version.pdfbin4198 -> 4199 bytes
-rw-r--r--tex/context/base/context.mkiv2
-rw-r--r--tex/context/base/pack-rul.mkiv24
-rw-r--r--tex/context/base/status-files.pdfbin24463 -> 24448 bytes
-rw-r--r--tex/context/base/status-lua.pdfbin255437 -> 255438 bytes
-rw-r--r--tex/context/base/typo-dha.lua104
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
8 files changed, 86 insertions, 48 deletions
diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv
index 8a835e568..32ee270dc 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.04 01:25}
+\newcontextversion{2015.08.04 23:01}
%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 ba07df476..006bd2078 100644
--- a/tex/context/base/context-version.pdf
+++ b/tex/context/base/context-version.pdf
Binary files differ
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index 2e5b71d87..522b3240d 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.04 01:25}
+\edef\contextversion{2015.08.04 23:01}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/pack-rul.mkiv b/tex/context/base/pack-rul.mkiv
index 2a7cca92a..af6841288 100644
--- a/tex/context/base/pack-rul.mkiv
+++ b/tex/context/base/pack-rul.mkiv
@@ -1506,12 +1506,12 @@
{%\pack_framed_stop_orientation % hm, wrong place ! should rotate the result (after reshape) .. moved down
\pack_framed_locator_before\p_framed_location
\ifconditional\c_framed_has_format
-% \ifconditional\c_framed_has_height \else
-% \edef\p_profile{\framedparameter\c!profile}%
-% \ifx\p_profile\empty\else
-% \pack_framed_profile_box
-% \fi
-% \fi
+ %\ifconditional\c_framed_has_height \else
+ % \edef\p_profile{\framedparameter\c!profile}%
+ % \ifx\p_profile\empty\else
+ % \pack_framed_profile_box
+ % \fi
+ %\fi
\ifx\p_framed_autowidth\v!force
\pack_framed_finish_a
\else\ifx\localwidth\v!fit
@@ -1525,12 +1525,12 @@
\else
\pack_framed_finish_c
\fi\fi\fi
- \ifconditional\c_framed_has_height \else
- \edef\p_profile{\framedparameter\c!profile}%
- \ifx\p_profile\empty\else
- \pack_framed_profile_box
- \fi
- \fi
+ \ifconditional\c_framed_has_height \else
+ \edef\p_profile{\framedparameter\c!profile}%
+ \ifx\p_profile\empty\else
+ \pack_framed_profile_box
+ \fi
+ \fi
\ifconditional\page_postprocessors_needed_box
% quite late
\page_postprocessors_linenumbers_box\b_framed_normal
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index dd044e140..fb4fc1ba0 100644
--- a/tex/context/base/status-files.pdf
+++ b/tex/context/base/status-files.pdf
Binary files differ
diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf
index 7b199667f..5eeef5490 100644
--- a/tex/context/base/status-lua.pdf
+++ b/tex/context/base/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/typo-dha.lua b/tex/context/base/typo-dha.lua
index 5ea18f001..6ab1f91c0 100644
--- a/tex/context/base/typo-dha.lua
+++ b/tex/context/base/typo-dha.lua
@@ -116,11 +116,15 @@ local strip = false
local s_isol = fonts.analyzers.states.isol
local function stopdir(finish)
- return new_textdir(finish == "TRT" and "-TRT" or "-TLT")
+ local n = new_textdir(finish == "TRT" and "-TRT" or "-TLT")
+ setprop(n,"direction",true)
+ return n
end
local function startdir(finish)
- return new_textdir(finish == "TRT" and "+TRT" or "+TLT")
+ local n = new_textdir(finish == "TRT" and "+TRT" or "+TLT")
+ setprop(n,"direction",true)
+ return n
end
local function nextisright(current)
@@ -297,11 +301,16 @@ local function process(start)
obsolete[#obsolete+1] = current
elseif trace_directions then
setcolor(current)
+ setprop(current,"direction",true)
end
end
else
setprop(current,"direction",true)
end
+ elseif id == glue_code then
+ setprop(current,"direction",'g')
+ elseif id == kern_code then
+ setprop(current,"direction",'k')
elseif id == whatsit_code then
local subtype = getsubtype(current)
if subtype == localpar_code then
@@ -339,52 +348,81 @@ local function process(start)
end
-- todo: track if really needed
+ -- todo: maybe we need to set the property (as it can be a copied list)
- local pp = nil
+ if done and strip then
+ local n = #obsolete
+ if n > 0 then
+ for i=1,n do
+ remove_node(head,obsolete[i],true)
+ end
+ if trace_directions then
+ report_directions("%s character nodes removed",n)
+ end
+ end
+ end
+
+ local state = false
+ local last = false
+ local collapse = true
+ current = head
+
+ -- spaces are an issue: todo
while current do
local id = getid(current)
if id == math_code then
+ -- todo: this might be tricky nesting
current = getnext(end_of_math(getnext(current)))
else
local cp = getprop(current,"direction")
- if cp == pp then
- elseif cp == true then
- if pp == "r" then
- head = insert_node_before(head,current,stopdir("TRT"))
- elseif pp == "l" then
- head = insert_node_before(head,current,stopdir("TLT"))
- end
- pp = cp
- done = true
- elseif cp == "l" then
- if pp == "r" then
- head = insert_node_before(head,current,stopdir("TRT"))
+ if cp == "l" then
+ if state ~= "l" then
+ if state == "r" then
+ head = insert_node_before(head,last or current,stopdir("TRT"))
+ end
+ head = insert_node_before(head,current,startdir("TLT"))
+ state = "l"
+ done = true
end
- head = insert_node_before(head,current,startdir("TLT"))
- pp = cp
- done = true
+ last = false
elseif cp == "r" then
- if pp == "l" then
+ if state ~= "r" then
+ if state == "l" then
+ head = insert_node_before(head,last or current,stopdir("TLT"))
+ end
+ head = insert_node_before(head,current,startdir("TRT"))
+ state = "r"
+ done = true
+ end
+ last = false
+ elseif collapse then
+ if cp == "k" or cp == "g" then
+ last = last or current
+ else
+ last = false
+ end
+ else
+ if state == "r" then
+ head = insert_node_before(head,current,stopdir("TRT"))
+ elseif state == "l" then
head = insert_node_before(head,current,stopdir("TLT"))
end
- head = insert_node_before(head,current,startdir("TRT"))
- pp = cp
- done = true
+ state = false
+ last = false
end
+ setprop(current,"direction",true)
end
- current = getnext(current)
- end
-
- if done and strip then
- local n = #obsolete
- if n > 0 then
- for i=1,n do
- remove_node(head,obsolete[i],true)
- end
- if trace_directions then
- report_directions("%s character nodes removed",n)
+ local next = getnext(current)
+ if next then
+ current = next
+ else
+ if state == "r" then
+ head = insert_node_after(head,current,stopdir("TRT"))
+ elseif state == "l" then
+ head = insert_node_after(head,current,stopdir("TLT"))
end
+ break
end
end
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 680952a7a..86af13339 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/04/15 01:25:05
+-- merge date : 08/04/15 23:01:26
do -- begin closure to overcome local limits and interference