diff options
| author | Philipp Gesang <phg42.2a@gmail.com> | 2013-08-05 12:15:46 +0200 | 
|---|---|---|
| committer | Philipp Gesang <phg42.2a@gmail.com> | 2013-08-05 12:15:46 +0200 | 
| commit | 3cbbd94c24c6d3a3b7b6b0cda3ed2175b84373ad (patch) | |
| tree | 8edf92583de9c533af366dcd03fd6c9e40797222 /luaotfload-database.lua | |
| parent | 645d1c970f45b4f322b687882af351f088dd748c (diff) | |
| download | luaotfload-3cbbd94c24c6d3a3b7b6b0cda3ed2175b84373ad.tar.gz | |
[db] handle missing optical size info
Diffstat (limited to 'luaotfload-database.lua')
| -rw-r--r-- | luaotfload-database.lua | 16 | 
1 files changed, 9 insertions, 7 deletions
| diff --git a/luaotfload-database.lua b/luaotfload-database.lua index 271e93c..7670ee6 100644 --- a/luaotfload-database.lua +++ b/luaotfload-database.lua @@ -726,16 +726,17 @@ end  --- “found” is the match accumulator  local add_to_match = function (found, size, face) -    local optsize, dsnsize, maxsize, minsize -    if face.size ~= false then -        optsize = face.size +    local continue = true + +    local optsize = face.size + +    if next (optsize) then +        local dsnsize, maxsize, minsize          dsnsize = optsize[1] and optsize[1] / 10          -- can be nil          maxsize = optsize[2] and optsize[2] / 10 or dsnsize          minsize = optsize[3] and optsize[3] / 10 or dsnsize -    end -    local continue = true -    if optsize then +          if dsnsize == size or (size > minsize and size <= maxsize) then              found[1] = face              continue = false ---> break @@ -746,6 +747,7 @@ local add_to_match = function (found, size, face)          found[1] = face          continue = false ---> break      end +      return found, continue  end @@ -925,7 +927,7 @@ resolve = function (_, _, specification) -- the 1st two parameters are used by C          local closest          local least = math.huge -- initial value is infinity          for i,face in next, found do -            local dsnsize    = face.size[1]/10 +            local dsnsize    = (face.size[1] or 0) / 10              local difference = mathabs(dsnsize - askedsize)              if difference < least then                  closest = face | 
