summaryrefslogtreecommitdiff
path: root/tex/context/base/mkxl/font-ota.lmt
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkxl/font-ota.lmt')
-rw-r--r--tex/context/base/mkxl/font-ota.lmt29
1 files changed, 20 insertions, 9 deletions
diff --git a/tex/context/base/mkxl/font-ota.lmt b/tex/context/base/mkxl/font-ota.lmt
index 8f6c059ef..6475c57e6 100644
--- a/tex/context/base/mkxl/font-ota.lmt
+++ b/tex/context/base/mkxl/font-ota.lmt
@@ -39,6 +39,8 @@ local setprop = nuts.setprop
local getsubtype = nuts.getsubtype
local getchar = nuts.getchar
local ischar = nuts.ischar
+local isnextchar = nuts.isnextchar
+----- isprevchar = nuts.isprevchar
local end_of_math = nuts.end_of_math
@@ -178,7 +180,8 @@ function analyzers.setstate(head,font) -- latin
local done = false
-- only letters
while current do
- local char, id = ischar(current,font)
+ -- local char, id = ischar(current,font)
+ local nxt, char, id = isnextchar(current,font)
if char then
if not getstate(current) then
-- local d = descriptions[char]
@@ -213,7 +216,8 @@ function analyzers.setstate(head,font) -- latin
end
first = false
if id == math_code then
- current = end_of_math(current)
+ -- current = end_of_math(current)
+ nxt = getnext(end_of_math(current))
end
elseif id == disc_code then
-- always in the middle .. it doesn't make much sense to assign a property
@@ -231,7 +235,8 @@ function analyzers.setstate(head,font) -- latin
end
end
::NEXT::
- current = getnext(current)
+ -- current = getnext(current)
+ current = nxt
end
if first then
setstate(last,first == last and s_isol or s_fina)
@@ -311,7 +316,8 @@ function methods.arab(head,font,attr)
local done = false
current = tonut(current)
while current do
- local char, id = ischar(current,font)
+ -- local char, id = ischar(current,font)
+ local nxt, char, id = isnextchar(current,font)
if char and not getstate(current) then
done = true
local classifier = classifiers[char]
@@ -424,10 +430,12 @@ function methods.arab(head,font,attr)
first = nil
end
if id == math_code then -- a bit duplicate as we test for glyphs twice
- current = end_of_math(current)
+ -- current = end_of_math(current)
+ nxt = getnext(end_of_math(current))
end
end
- current = getnext(current)
+ -- current = getnext(current)
+ current = nxt
end
if last then
if c_last == s_medi or c_last == s_fina then
@@ -498,7 +506,8 @@ do
end
while current do
- local char, id = ischar(current,font)
+ -- local char, id = ischar(current,font)
+ local nxt, char, id = isnextchar(current,font)
if char and not getstate(current) then
local currjoin = joining[char]
done = true
@@ -551,10 +560,12 @@ do
wrapup()
end
if id == math_code then -- a bit duplicate as we test for glyphs twice
- current = end_of_math(current)
+ -- current = end_of_math(current)
+ nxt = getnext(end_of_math(current))
end
end
- current = getnext(current)
+ -- current = getnext(current)
+ current = nxt
end
if last then
wrapup()