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 /otfl-font-nms.lua | |
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?
Diffstat (limited to 'otfl-font-nms.lua')
-rw-r--r-- | otfl-font-nms.lua | 73 |
1 files changed, 52 insertions, 21 deletions
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 |