diff options
| -rw-r--r-- | luaotfload-fonts.lua | 94 | 
1 files changed, 58 insertions, 36 deletions
| diff --git a/luaotfload-fonts.lua b/luaotfload-fonts.lua index aba210d..0502a9c 100644 --- a/luaotfload-fonts.lua +++ b/luaotfload-fonts.lua @@ -69,12 +69,12 @@ end  -- table containing hard to guess styles  local styles = { -    calibrii = "italic", -    bookosi = "italic", -    bookosb = "bold", -    lsansi = "italic", -    antquab = "bold", -    antquai = "italic", +    calibrii = "reg-no-no-norm-0-text", +    bookosi = "reg-it-no-norm-0-text", +    bookosb = "bd-no-no-norm-0-text", +    lsansi = "reg-it-no-norm-0-text", +    antquab = "bd-no-no-norm-0-text", +    antquai = "reg-it-no-norm-0-text",      }  -- euristics to normalize the style @@ -82,27 +82,37 @@ local function normalize_style(style, family)      local s = {}      if style:find("semibold") or style:find("demibold")              or style:find("lightbold") or style:match("lb$") then -        s.weight = "demibold" -    elseif style:find("bold") or style:find("heavy") or style:match("xb$") +        s.weight = "smbd" +    elseif style:find("bold") or style:match("xb$")              or style:match("bd$") or style:match("bb$") then -        s.weight = "bold" +        s.weight = "bd"      elseif style:find("medium") or style:find("med") then -        s.weight = "medium" -    elseif style:find("light") or style:find("narrow") then -        s.weight = "narrow" -- ? +        s.weight = "med" +    elseif style:find("narrow") then +        s.weight = "nar" -- ?      end      if style:find("italic") or style:find("oblique")  or style:match("it$") then -        s.italic = true +        s.italic = "it" +    elseif style:find("oblique") then +        s.italic = "obl" +    end +    if style:find("heavy") then +        s.type = "heavy" +    elseif style:find("light") then +        s.type = "light"      end      if style:find("regular") or style:match("rg$") then          s.regular = true      end +    if style:find("condensed") then +        s.condensed = true +    end      if style:find("caption") or style:find("capt") then -        s.size_type = 'caption' +        s.size_type = 'capt'      elseif style:find("display") or style:find("disp") then -        s.size_type = 'display' +        s.size_type = 'disp'      elseif style:find("subhead") or style:find("subh") then -        s.size_type = 'subhead' +        s.size_type = 'subh'      end      local size = tonumber(string.match(style, "%d+"))      if size and size > 4 and size < 25 then  @@ -113,35 +123,47 @@ local function normalize_style(style, family)          local endletter = style:sub(-1, -1)          if family:find(truncated) and family:sub(-1,-1) ~= endletter then               if endletter =='b' then -                s.weight = "bold" +                s.weight = "bd"              elseif endletter == 'i' then -                s.italic = true +                s.italic = "it"              end          end      end      if not next(s) and styles[style] then          return styles[style]      end -    if not next(s) then -        return style -- or "regular ?" +    local result = nil +    if s.weight then +        result = s.weight      else -        local result = nil -        if s.weight then -            result = s.weight -        else -            result = 'regular' -        end -        if s.italic then -            result = result.."-italic" -        end -        if s.size then -            result = result.."-"..s.size -        end -        if s.size_type then -            result = result.."-"..s.size_type -        end -        return result +        result = 'reg' +    end +    if s.italic then +        result = result.."-"..s.italic +    else +        result = result.."-no"      end +    if s.condensed then +        result = result.."-cond" +    else +        result = result.."-no" +    end +    if s.type then +        result = result.."-"..s.type +    else +        result = result.."-norm" +    end +    if s.size then +        result = result.."-"..s.size +    else +        result = result.."-0" +    end +    if s.size_type then +        result = result.."-"..s.size_type +    else +        result = result.."-text" +    end +    return result  end  local function load_font(filename, names, texmf) | 
