diff options
| -rw-r--r-- | otfl-font-def.lua | 33 | ||||
| -rw-r--r-- | otfl-font-otn.lua | 74 | 
2 files changed, 58 insertions, 49 deletions
diff --git a/otfl-font-def.lua b/otfl-font-def.lua index 10958cf..96de480 100644 --- a/otfl-font-def.lua +++ b/otfl-font-def.lua @@ -258,6 +258,24 @@ end  --     return tfmdata  -- end +local function checkembedding(tfmdata) +    local properties = tfmdata.properties +    local embedding +    if directive_embedall then +        embedding = "full" +    elseif properties and properties.filename and constructors.dontembed[properties.filename] then +        embedding = "no" +    else +        embedding = "subset" +    end +    if properties then +        properties.embedding = embedding +    else +        tfmdata.properties = { embedding = embedding } +    end +    tfmdata.embedding = embedding +end +  function definers.loadfont(specification)      local hash = constructors.hashinstance(specification)      local tfmdata = loadedfonts[hash] -- hashes by size ! @@ -287,21 +305,8 @@ function definers.loadfont(specification)              end          end          if tfmdata then -            local properties = tfmdata.properties -            local embedding -            if directive_embedall then -                embedding = "full" -            elseif properties and properties.filename and constructors.dontembed[properties.filename] then -                embedding = "no" -            else -                embedding = "subset" -            end -            if properties then -                properties.embedding = embedding -            else -                tfmdata.properties = { embedding = embedding } -            end              tfmdata = definers.applypostprocessors(tfmdata) +            checkembedding(tfmdata) -- todo: general postprocessor              loadedfonts[hash] = tfmdata              designsizes[specification.hash] = tfmdata.parameters.designsize          end diff --git a/otfl-font-otn.lua b/otfl-font-otn.lua index 2fd910e..8e67597 100644 --- a/otfl-font-otn.lua +++ b/otfl-font-otn.lua @@ -2359,55 +2359,59 @@ local function prepare_lookups(tfmdata)          local description = descriptions[unicode] -        local lookups = description.slookups -        if lookups then -            for lookupname, lookupdata in next, lookups do -                action[lookuptypes[lookupname]](lookupdata,lookupname,unicode,lookuphash) +        if description then + +            local lookups = description.slookups +            if lookups then +                for lookupname, lookupdata in next, lookups do +                    action[lookuptypes[lookupname]](lookupdata,lookupname,unicode,lookuphash) +                end              end -        end -        local lookups = description.mlookups -        if lookups then -            for lookupname, lookuplist in next, lookups do -                local lookuptype = lookuptypes[lookupname] -                for l=1,#lookuplist do -                    local lookupdata = lookuplist[l] -                    action[lookuptype](lookupdata,lookupname,unicode,lookuphash) +            local lookups = description.mlookups +            if lookups then +                for lookupname, lookuplist in next, lookups do +                    local lookuptype = lookuptypes[lookupname] +                    for l=1,#lookuplist do +                        local lookupdata = lookuplist[l] +                        action[lookuptype](lookupdata,lookupname,unicode,lookuphash) +                    end                  end              end -        end -        local list = description.kerns -        if list then -            for lookup, krn in next, list do  -- ref to glyph, saves lookup -                local target = lookuphash[lookup] -                if target then -                    target[unicode] = krn -                else -                    lookuphash[lookup] = { [unicode] = krn } +            local list = description.kerns +            if list then +                for lookup, krn in next, list do  -- ref to glyph, saves lookup +                    local target = lookuphash[lookup] +                    if target then +                        target[unicode] = krn +                    else +                        lookuphash[lookup] = { [unicode] = krn } +                    end                  end              end -        end -        local list = description.anchors -        if list then -            for typ, anchors in next, list do -- types -                if typ == "mark" or typ == "cexit" then -- or entry? -                    for name, anchor in next, anchors do -                        local lookups = anchor_to_lookup[name] -                        if lookups then -                            for lookup, _ in next, lookups do -                                local target = lookuphash[lookup] -                                if target then -                                    target[unicode] = anchors -                                else -                                    lookuphash[lookup] = { [unicode] = anchors } +            local list = description.anchors +            if list then +                for typ, anchors in next, list do -- types +                    if typ == "mark" or typ == "cexit" then -- or entry? +                        for name, anchor in next, anchors do +                            local lookups = anchor_to_lookup[name] +                            if lookups then +                                for lookup, _ in next, lookups do +                                    local target = lookuphash[lookup] +                                    if target then +                                        target[unicode] = anchors +                                    else +                                        lookuphash[lookup] = { [unicode] = anchors } +                                    end                                  end                              end                          end                      end                  end              end +          end      end  | 
