From f6359a1c5ccbae1f55ae5ae9a190df3ecb5c1554 Mon Sep 17 00:00:00 2001 From: Elie Roux Date: Thu, 21 Jan 2010 15:15:57 +0100 Subject: More bugfixes in style guessing oblique is now considered different as italic, and fixing database shape for fonts with different fontfamilies. --- luaotfload-fonts.lua | 29 +++++++++++++++++++---------- 1 file 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, -- cgit v1.2.3