summaryrefslogtreecommitdiff
path: root/tex/context/base/typo-mir.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/typo-mir.lua')
-rw-r--r--tex/context/base/typo-mir.lua32
1 files changed, 17 insertions, 15 deletions
diff --git a/tex/context/base/typo-mir.lua b/tex/context/base/typo-mir.lua
index 435400ceb..5ab85c7c2 100644
--- a/tex/context/base/typo-mir.lua
+++ b/tex/context/base/typo-mir.lua
@@ -63,8 +63,8 @@ mirroring = mirroring or { }
mirroring.strip = false
mirroring.attribute = attributes.private("mirroring")
-local state = attributes.private('state')
-local mirrora = attributes.private('mirroring')
+local a_state = attributes.private('state')
+local a_mirroring = attributes.private('mirroring')
local directions = characters.directions -- maybe make a special mirror table
@@ -84,7 +84,7 @@ local function finish_auto_before()
head, inserted = insert_node_before(head,current,nodes.textdir("-"..finish))
finished, finidir = inserted, finish
if trace_mirroring then
- insert(list,#list,format("finish %s",finish))
+ insert(list,#list,format("auto finish inserted before: %s",finish))
finipos = #list-1
end
finish, autodir, done = nil, 0, true
@@ -94,7 +94,7 @@ local function finish_auto_after()
head, current = insert_node_after(head,current,nodes.textdir("-"..finish))
finished, finidir = current, finish
if trace_mirroring then
- list[#list+1] = format("finish %s",finish)
+ list[#list+1] = format("auto finish inserted after: %s",finish)
finipos = #list
end
finish, autodir, done = nil, 0, true
@@ -110,15 +110,15 @@ local function force_auto_left_before()
finish, autodir, done = "TRT", -1, true
end
if finidir == finish then
- remove_node(head,finished,true)
+ head = remove_node(head,finished,true)
if trace_mirroring then
- list[finipos] = list[finipos].." (deleted)"
- insert(list,#list,format("start %s (deleted)",finish))
+ list[finipos] = list[finipos] .. " (deleted afterwards)"
+ insert(list,#list,format("start text dir %s (embedded: %s)",finish,embedded))
end
else
head, inserted = insert_node_before(head,current,nodes.textdir("+"..finish))
if trace_mirroring then
- insert(list,#list,format("start %s",finish))
+ insert(list,#list,format("start text dir %s (embedded: %s)",finish,embedded))
end
end
end
@@ -133,19 +133,21 @@ local function force_auto_right_before()
finish, autodir, done = "TLT", 1, true
end
if finidir == finish then
- remove_node(head,finished,true)
+ head = remove_node(head,finished,true)
if trace_mirroring then
- list[finipos] = list[finipos].." (deleted)"
- insert(list,#list,format("start %s (deleted)",finish))
+ list[finipos] = list[finipos] .. " (deleted afterwards)"
+ insert(list,#list,format("start text dir %s (embedded: %s)",finish,embedded))
end
else
head, inserted = insert_node_before(head,current,nodes.textdir("+"..finish))
if trace_mirroring then
- insert(list,#list,format("start %s",finish))
+ insert(list,#list,format("start text dir %s (embedded: %s)",finish,embedded))
end
end
end
+-- todo: use new dir functions
+
function mirroring.process(namespace,attribute,start) -- todo: make faster
if not start.next then
return start, false
@@ -219,7 +221,7 @@ function mirroring.process(namespace,attribute,start) -- todo: make faster
end
elseif lro or override < 0 then
if d == "r" or d == "al" then
- set_attribute(current,state,4) -- maybe better have a special bidi attr value -> override (9) -> todo
+ set_attribute(current,a_state,4) -- maybe better have a special bidi attr value -> override (9) -> todo
if trace_mirroring then
list[#list+1] = format("char %s (%s / U+%04X) of class %s overidden to l (bidi=%s) (state=isol)",utfchar(char),char,char,d,attr)
end
@@ -296,7 +298,7 @@ function mirroring.process(namespace,attribute,start) -- todo: make faster
end
top = top + 1
stack[top] = { override, embedded }
- embedded = 1
+ embedded = -1 -- was 1
obsolete[#obsolete+1] = current
elseif d == "pdf" then -- Pop Directional Format
-- override = 0
@@ -332,7 +334,7 @@ function mirroring.process(namespace,attribute,start) -- todo: make faster
else
autodir = 1
end
- embedded = autodir
+ -- embedded = autodir
if trace_mirroring then
list[#list+1] = format("pardir %s",dir)
end