diff options
author | Karl Berry <karl@freefriends.org> | 2017-05-02 22:24:44 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-05-02 22:24:44 +0000 |
commit | ced65a4c1daa9985de131a295943b6568df35e43 (patch) | |
tree | 01115172f4197c33173dd19ab08eea84d56a415b /Master/texmf-dist/tex/context/base/mkiv/font-ots.lua | |
parent | e836e85e085cd03de13f7f95250d8178b2b8ae18 (diff) |
context/beta/cont-tmf.zip Apr 27 01:08
git-svn-id: svn://tug.org/texlive/trunk@44160 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkiv/font-ots.lua')
-rw-r--r-- | Master/texmf-dist/tex/context/base/mkiv/font-ots.lua | 54 |
1 files changed, 31 insertions, 23 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/font-ots.lua b/Master/texmf-dist/tex/context/base/mkiv/font-ots.lua index c86a0ccdaed..16c2ce73581 100644 --- a/Master/texmf-dist/tex/context/base/mkiv/font-ots.lua +++ b/Master/texmf-dist/tex/context/base/mkiv/font-ots.lua @@ -1943,16 +1943,19 @@ local function chainrun(head,start,last,dataset,sequence,rlmode,ck,skipped) -- -- bad rules -- end local chainlookup = chainlookups[1] - local chainkind = chainlookup.type - local chainproc = chainprocs[chainkind] - if chainproc then - local ok - head, start, ok = chainproc(head,start,last,dataset,sequence,chainlookup,rlmode,1) - if ok then - done = true + for j=1,#chainlookup do + local chainstep = chainlookup[j] + local chainkind = chainstep.type + local chainproc = chainprocs[chainkind] + if chainproc then + local ok + head, start, ok = chainproc(head,start,last,dataset,sequence,chainstep,rlmode,1) + if ok then + done = true + end + else + logprocess("%s: %s is not yet supported (1)",cref(dataset,sequence),chainkind) end - else - logprocess("%s: %s is not yet supported (1)",cref(dataset,sequence),chainkind) end else -- See LookupType 5: Contextual Substitution Subtable. Now it becomes messy. The @@ -1963,6 +1966,8 @@ local function chainrun(head,start,last,dataset,sequence,rlmode,ck,skipped) -- -- U+1105 U+119E U+1105 U+119E : sourcehansansklight: script=hang ccmp=yes -- + -- Even worse are these family emoji shapes as they can have multiple lookups + -- per slot (probably only for gpos). local i = 1 while start do if skipped then @@ -1982,22 +1987,25 @@ local function chainrun(head,start,last,dataset,sequence,rlmode,ck,skipped) end local chainlookup = chainlookups[i] if chainlookup then - local chainkind = chainlookup.type - local chainproc = chainprocs[chainkind] - if chainproc then - local ok, n - head, start, ok, n = chainproc(head,start,last,dataset,sequence,chainlookup,rlmode,i) - -- messy since last can be changed ! - if ok then - done = true - if n and n > 1 and i + n > nofchainlookups then - -- this is a safeguard, we just ignore the rest of the lookups - break + for j=1,#chainlookup do + local chainstep = chainlookup[j] + local chainkind = chainstep.type + local chainproc = chainprocs[chainkind] + if chainproc then + local ok, n + head, start, ok, n = chainproc(head,start,last,dataset,sequence,chainstep,rlmode,i) + -- messy since last can be changed ! + if ok then + done = true + if n and n > 1 and i + n > nofchainlookups then + -- this is a safeguard, we just ignore the rest of the lookups + break + end end + else + -- actually an error + logprocess("%s: %s is not yet supported (2)",cref(dataset,sequence),chainkind) end - else - -- actually an error - logprocess("%s: %s is not yet supported (2)",cref(dataset,sequence),chainkind) end end i = i + 1 |