summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/font-ots.lua
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2017-08-02 19:40:52 +0200
committerContext Git Mirror Bot <phg42.2a@gmail.com>2017-08-02 19:40:52 +0200
commitee627840c85edc7b073d0582632dcc4da82a1e83 (patch)
treeff490354230b8ea3a1d75bbb879aae1823895725 /tex/context/base/mkiv/font-ots.lua
parent391b705af1c22eaa6027d18a146e8d3fafc8832f (diff)
downloadcontext-ee627840c85edc7b073d0582632dcc4da82a1e83.tar.gz
2017-08-02 19:04:00
Diffstat (limited to 'tex/context/base/mkiv/font-ots.lua')
-rw-r--r--tex/context/base/mkiv/font-ots.lua49
1 files changed, 35 insertions, 14 deletions
diff --git a/tex/context/base/mkiv/font-ots.lua b/tex/context/base/mkiv/font-ots.lua
index 00fd3dc26..98a9184ae 100644
--- a/tex/context/base/mkiv/font-ots.lua
+++ b/tex/context/base/mkiv/font-ots.lua
@@ -864,14 +864,24 @@ function handlers.gpos_pair(head,start,dataset,sequence,kerns,rlmode,step,i,inje
while snext do
local nextchar = ischar(snext,currentfont)
if nextchar then
- local krn = kerns[nextchar]
- if not krn and marks[nextchar] then
- -- hm, needs checking i guess
- prev = snext
+ -- local krn = kerns[nextchar]
+ -- if not krn and marks[nextchar] then
+ -- prev = snext
+ -- snext = getnext(snext)
+ -- elseif not krn then
+ -- break
+ -- else
+ if marks[nextchar] and sequence.flags[1] then
+ prev = snext
snext = getnext(snext)
- elseif not krn then
- break
+-- elseif sequence.markclass and sequence.markclass[nextchar] then
+-- prev = snext
+-- snext = getnext(snext)
else
+ local krn = kerns[nextchar]
+ if not krn then
+ break
+ end
local format = step.format
if format == "pair" then
local a, b = krn[1], krn[2]
@@ -1089,8 +1099,8 @@ function handlers.gpos_cursive(head,start,dataset,sequence,exitanchors,rlmode,st
local nextchar = ischar(nxt,currentfont)
if not nextchar then
break
- elseif marks[nextchar] then
- nxt = getnext(nxt)
+ elseif marks[nextchar] then -- always sequence.flags[1]
+ nxt = getnext(nxt)
else
local exit = exitanchors[3]
if exit then
@@ -1469,13 +1479,24 @@ function chainprocs.gpos_pair(head,start,stop,dataset,sequence,currentlookup,rlm
if not nextchar then
break
end
- local krn = kerns[nextchar]
- if not krn and marks[nextchar] then
- prev = snext
+ -- local krn = kerns[nextchar]
+ -- if not krn and marks[nextchar] then
+ -- prev = snext
+ -- snext = getnext(snext)
+ -- elseif not krn then
+ -- break
+ -- else
+ if marks[nextchar] and sequence.flags[1] then
+ prev = snext
snext = getnext(snext)
- elseif not krn then
- break
+-- elseif sequence.markclass and sequence.markclass[nextchar] then
+-- prev = snext
+-- snext = getnext(snext)
else
+ local krn = kerns[nextchar]
+ if not krn then
+ break
+ end
local format = step.format
if format == "pair" then
local a, b = krn[1], krn[2]
@@ -4089,7 +4110,7 @@ local function k_run_multiple(sub,injection,last,font,attr,steps,nofsteps,datase
local lookupcache = step.coverage
local lookupmatch = lookupcache[char]
if lookupmatch then
- local h, d, ok = handler(head,n,dataset,sequence,lookupmatch,rlmode,step,i,injection)
+ local h, d, ok = handler(sub,n,dataset,sequence,lookupmatch,rlmode,step,i,injection) -- sub was head
if ok then
return true
end