diff options
| author | Hans Hagen <pragma@wxs.nl> | 2017-08-04 09:53:17 +0200 | 
|---|---|---|
| committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2017-08-04 09:53:17 +0200 | 
| commit | 817e18d3f6969b1b50b4883ec4d5bb05c985db88 (patch) | |
| tree | 3569da776df0f8bcf449efd99b11380544d44ec5 /tex/context/base/mkiv/font-oup.lua | |
| parent | ab253433729006addd4336870face2facce5f894 (diff) | |
| download | context-817e18d3f6969b1b50b4883ec4d5bb05c985db88.tar.gz | |
2017-08-04 09:46:00
Diffstat (limited to 'tex/context/base/mkiv/font-oup.lua')
| -rw-r--r-- | tex/context/base/mkiv/font-oup.lua | 35 | 
1 files changed, 28 insertions, 7 deletions
| diff --git a/tex/context/base/mkiv/font-oup.lua b/tex/context/base/mkiv/font-oup.lua index dab746125..c67662844 100644 --- a/tex/context/base/mkiv/font-oup.lua +++ b/tex/context/base/mkiv/font-oup.lua @@ -2534,8 +2534,15 @@ local function mergesteps(t,k)      end  end +local function checkmerge(sequence) +    local steps = sequence.steps +    if steps then +        setmetatableindex(steps,mergesteps) +    end +end +  local function checkflags(sequence,resources) -    if not sequence.skipsome then +    if not sequence.skiphash then          local flags = sequence.flags          if flags then              local skipmark     = flags[1] @@ -2544,24 +2551,38 @@ local function checkflags(sequence,resources)              local markclass    = sequence.markclass              local skipsome     = skipmark or skipligature or skipbase or markclass or false              if skipsome then -                sequence.skipsome = setmetatableindex(function(t,k) +                sequence.skiphash = setmetatableindex(function(t,k)                      local c = resources.classes[k] -- delayed table                      local v = c == skipmark or (markclass and c == "mark" and not markclass[k]) or c == skipligature or c == skipbase +-- local v = (skipmark     and c == "mark") +--        or (markclass    and c == "mark" and not markclass[k]) +--        or (skipligature and c == "ligature") +--        or (skipbase     and c == "base")                      t[k] = v or false                      return v                  end)              else -                sequence.skipsome = false +                sequence.skiphash = false              end          else -            sequence.skipsome = false +            sequence.skiphash = false +        end +    end +end + +local function checksteps(sequence) +    local steps = sequence.steps +    if steps then +        for i=1,#steps do +            steps[i].index = i          end      end  end  if fonts.helpers then -    fonts.helpers.mergesteps = mergesteps +    fonts.helpers.checkmerge = checkmerge      fonts.helpers.checkflags = checkflags +    fonts.helpers.checksteps = checksteps -- has to happen last  end  function readers.expand(data) @@ -2619,8 +2640,6 @@ function readers.expand(data)                  if steps then                      local nofsteps = sequence.nofsteps -                    setmetatableindex(steps,mergesteps) -                      local kind = sequence.type                      local markclass = sequence.markclass                      if markclass then @@ -2632,7 +2651,9 @@ function readers.expand(data)                          end                      end +                    checkmerge(sequence)                      checkflags(sequence,resources) +                    checksteps(sequence)                      for i=1,nofsteps do                          local step = steps[i] | 
