diff options
| author | Elie Roux <eroux@dedibox.ebzao.info> | 2010-01-21 15:15:57 +0100 | 
|---|---|---|
| committer | Elie Roux <eroux@dedibox.ebzao.info> | 2010-01-21 15:15:57 +0100 | 
| commit | f6359a1c5ccbae1f55ae5ae9a190df3ecb5c1554 (patch) | |
| tree | 82f28162bb8910f7407b452ce9cfa8349becde8c | |
| parent | 6e76892d76cf5a82fc02b6e678152606c2b921fe (diff) | |
| download | luaotfload-f6359a1c5ccbae1f55ae5ae9a190df3ecb5c1554.tar.gz | |
More bugfixes in style guessing
oblique is now considered different as italic, and fixing database shape
for fonts with different fontfamilies.
| -rw-r--r-- | luaotfload-fonts.lua | 29 | 
1 files changed, 19 insertions, 10 deletions
diff --git a/luaotfload-fonts.lua b/luaotfload-fonts.lua index 0502a9c..c346f19 100644 --- a/luaotfload-fonts.lua +++ b/luaotfload-fonts.lua @@ -81,30 +81,30 @@ local styles = {  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 +            or style:find("lightbold") or style:match("lb%d*") then          s.weight = "smbd" -    elseif style:find("bold") or style:match("xb$") -            or style:match("bd$") or style:match("bb$") then +    elseif style:find("bold") or style:match("xb%d*") +            or style:match("bd%d*") or style:match("bb%d*") then          s.weight = "bd" -    elseif style:find("medium") or style:find("med") then -        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 +    if style:find("italic") or style:match("it%d*") then          s.italic = "it"      elseif style:find("oblique") then          s.italic = "obl"      end      if style:find("heavy") then          s.type = "heavy" +    elseif style:find("medium") or style:find("med") then +        s.type = "med"      elseif style:find("light") then          s.type = "light"      end -    if style:find("regular") or style:match("rg$") then +    if style:find("regular") or style:match("rg%d*") then          s.regular = true      end -    if style:find("condensed") then +    if style:find("condensed") or style:match("cond") then          s.condensed = true      end      if style:find("caption") or style:find("capt") then @@ -178,7 +178,16 @@ local function load_font(filename, names, texmf)                      if not families[fullinfo.family] then                          families[fullinfo.family] = { }                      end -                    families[fullinfo.family][fullinfo.style] = {texmf and basename(filename) or filename, index-1} +                    if not fullinfo.style then +                        fullinfo.style = sanitize(file.nameonly(filename)) +                    end +                    local guessed = normalize_style(fullinfo.style, fullinfo.family) +                    families[fullinfo.family][texmf and basename(filename) or filename] =  +                        { +                          guessed_style = guessed, +                          raw_style = fullinfo.style, +                          index = index-1, +                        }                      psnames[fullinfo.psname] = {texmf and basename(filename) or filename, index-1}                  end              else @@ -193,7 +202,7 @@ local function load_font(filename, names, texmf)                      fullinfo.style = sanitize(file.nameonly(filename))                  end                  local guessed = normalize_style(fullinfo.style, fullinfo.family) -                families[fullinfo.family][texmf and basename(filename) or filename] =  +                families[fullinfo.family][filename] =                       {                        guessed_style = guessed,                        raw_style = fullinfo.style,  | 
