diff options
author | Hans Hagen <pragma@wxs.nl> | 2017-08-02 19:40:52 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2017-08-02 19:40:52 +0200 |
commit | ee627840c85edc7b073d0582632dcc4da82a1e83 (patch) | |
tree | ff490354230b8ea3a1d75bbb879aae1823895725 /tex/context/base/mkiv/font-ots.lua | |
parent | 391b705af1c22eaa6027d18a146e8d3fafc8832f (diff) | |
download | context-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.lua | 49 |
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 |