summaryrefslogtreecommitdiff
path: root/otfl-font-nms.lua
diff options
context:
space:
mode:
authoreroux <elie.roux@telecom-bretagne.eu>2010-03-10 09:55:53 +0100
committereroux <elie.roux@telecom-bretagne.eu>2010-03-10 09:55:53 +0100
commit76e023b064c2c5b7b7914bd68916adac8adc74f2 (patch)
treeeb49147b8d8916823c0fbc0c1b548bf09a9d1384 /otfl-font-nms.lua
parent51a05b35d2a528915ab3ff0f70761657b2648db9 (diff)
downloadluaotfload-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.lua73
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