diff options
| author | eroux <elie.roux@telecom-bretagne.eu> | 2010-03-10 09:55:53 +0100 | 
|---|---|---|
| committer | eroux <elie.roux@telecom-bretagne.eu> | 2010-03-10 09:55:53 +0100 | 
| commit | 76e023b064c2c5b7b7914bd68916adac8adc74f2 (patch) | |
| tree | eb49147b8d8916823c0fbc0c1b548bf09a9d1384 | |
| parent | 51a05b35d2a528915ab3ff0f70761657b2648db9 (diff) | |
| download | luaotfload-76e023b064c2c5b7b7914bd68916adac8adc74f2.tar.gz | |
Making purge an non-default option and fixing log levels
It seems that there is no performance regressions with purge... can you
test, maybe it would be better to make it default?
| -rw-r--r-- | mkluatexfontdb.lua | 2 | ||||
| -rw-r--r-- | otfl-font-nms.lua | 73 | 
2 files changed, 53 insertions, 22 deletions
diff --git a/mkluatexfontdb.lua b/mkluatexfontdb.lua index dbfbf02..15fcb1d 100644 --- a/mkluatexfontdb.lua +++ b/mkluatexfontdb.lua @@ -146,7 +146,7 @@ local function process_cmdline()          mkluatexfontdb.directory = kpse.expand_var("$TEXMFSYSVAR") .. mkluatexfontdb.subtexmfvardir      end      mkluatexfontdb.directory = fonts.path_normalize(mkluatexfontdb.directory) -    names.log_level = log_level +    names.set_log_level(log_level)  end  process_cmdline() diff --git a/otfl-font-nms.lua b/otfl-font-nms.lua index 305acdc..bcc9467 100644 --- a/otfl-font-nms.lua +++ b/otfl-font-nms.lua @@ -18,6 +18,17 @@ local trace_progress = true  --trackers.register("names.progress", function(v) t  local trace_search   = false --trackers.register("names.search",   function(v) trace_search   = v end)  local trace_loading  = false --trackers.register("names.loading",  function(v) trace_loading  = v end) +function fonts.names.set_log_level(level) +    if level == 2 then +        trace_progress = false +        trace_loading = true +    elseif level >= 3 then +        trace_progress = false +        trace_loading = true +        trace_search = true +    end +end +      local lastislog = 0  function log(fmt, ...) @@ -32,7 +43,7 @@ local log = names.log  -- The progress bar  local function progress(current, total) -    if names.log_level == 1 then +    if trace_progress then  --      local width   = os.getenv("COLUMNS") -2 --doesn't work          local width   = 78          local percent = current/total @@ -93,30 +104,42 @@ function fontloader.fullinfo(...)  end  local function load_font(filename, fontnames, status, newfontnames, newstatus, texmf) -    local mappings  = newfontnames.mappings  or { } -    local families  = newfontnames.families  or { } +    local mappings  = newfontnames and newfontnames.mappings  or { } +    local families  = newfontnames and newfontnames.families  or { }      local oldmappings  = fontnames.mappings  or { }      local oldfamilies  = fontnames.families  or { } +    local purge = true +    local tofillstatus = newstatus +    if not newstatus then +        purge = false +        families = fontnames.families  or { } +        mappings = fontnames.mappings  or { } +        tofillstatus = status +    end      if filename then          local db_lastmodif = status[filename] and status[filename].timestamp          local true_lastmodif = lfs.attributes(filename, "modification") -        newstatus[filename] = {timestamp = true_lastmodif, mappings = {}} +        if purge then +            tofillstatus[filename] = {timestamp = true_lastmodif, mappings = {}} +        end          if db_lastmodif and db_lastmodif == true_lastmodif then -            for _, i in ipairs(status[filename].mappings) do -                mappings[#mappings+1] = oldmappings[i] -                table.insert(newstatus[filename].mappings, #mappings) -                if oldmappings[i].names.family then -                    if not families[oldmappings[i].names.family] then -                        families[oldmappings[i].names.family] = {} +            if purge then +                for _, i in ipairs(status[filename].mappings) do +                    mappings[#mappings+1] = oldmappings[i] +                    table.insert(tofillstatus[filename].mappings, #mappings) +                    if oldmappings[i].names.family then +                        if not families[oldmappings[i].names.family] then +                            families[oldmappings[i].names.family] = {} +                        end +                        table.insert(families[oldmappings[i].names.family], #mappings) +                    elseif trace_loading then +                        logs.report("font with broken names table: %s, ignored", filename)                      end -                    table.insert(families[oldmappings[i].names.family], #mappings) -                elseif trace_loading then -                    logs.report("font with broken names table: %s, ignored", filename) -                end -                if trace_loading then -                    logs.report("font already indexed: %s", filename)                  end              end +            if trace_loading then +                logs.report("font already indexed: %s", filename) +            end              return          end          if trace_loading then @@ -133,7 +156,7 @@ local function load_font(filename, fontnames, status, newfontnames, newstatus, t                          fullinfo.filename = basename(filename)                      end                      mappings[#mappings+1] = fullinfo -                    table.insert(newstatus[filename].mappings, #mappings) +                    table.insert(tofillstatus[filename].mappings, #mappings)                      if fullinfo.names.family then                          if not families[fullinfo.names.family] then                              families[fullinfo.names.family] = { } @@ -150,7 +173,7 @@ local function load_font(filename, fontnames, status, newfontnames, newstatus, t                      fullinfo.filename = basename(filename)                  end                  mappings[#mappings+1] = fullinfo -                table.insert(newstatus[filename].mappings, #mappings) +                table.insert(tofillstatus[filename].mappings, #mappings)                  if fullinfo.names.family then                      if not families[fullinfo.names.family] then                          families[fullinfo.names.family] = { } @@ -346,11 +369,19 @@ local function update(fontnames, status, force, purge)              end          end      end -    local newfontnames = fontnames_init() -    local newstatus    = status_init() +    local newfontnames = nil +    local newstatus    = nil +    if purge then +        newfontnames = fontnames_init() +        newstatus    = status_init() +    end      scan_texmf_tree(fontnames, status, newfontnames, newstatus)      scan_os_fonts  (fontnames, status, newfontnames, newstatus) -    return newfontnames, newstatus +    if purge then +        return newfontnames, newstatus +    else +        return fontnames, status +    end  end  names.scan   = scan_dir  | 
