summaryrefslogtreecommitdiff
path: root/otfl-font-nms.lua
diff options
context:
space:
mode:
Diffstat (limited to 'otfl-font-nms.lua')
-rw-r--r--otfl-font-nms.lua93
1 files changed, 37 insertions, 56 deletions
diff --git a/otfl-font-nms.lua b/otfl-font-nms.lua
index b2b5390..0942eda 100644
--- a/otfl-font-nms.lua
+++ b/otfl-font-nms.lua
@@ -39,9 +39,7 @@ local gsub, match, rpadd = string.gsub, string.match, string.rpadd
local gmatch, sub, find = string.gmatch, string.sub, string.find
local utfgsub = unicode.utf8.gsub
-local suppress_output = false
-local trace_short = false --tracing adapted to rebuilding of the database inside a document
-local trace_search = false --trackers.register("names.search", function(v) trace_search = v end)
+local report = logs.names_report
local function sanitize(str)
if str then
@@ -76,9 +74,10 @@ local function load_names()
foundname = luaname
end
if data then
- logs.info("Font names database loaded", "%s", foundname)
+ report("info", 0, "Font names database loaded", "%s", foundname)
else
- logs.info([[Font names database not found, generating new one.
+ report("info", 0,
+ [[Font names database not found, generating new one.
This can take several minutes; please be patient.]])
data = names.update(fontnames_init())
names.save(data)
@@ -187,9 +186,10 @@ function names.resolve(_,_,specification) -- the 1st two parameters are used by
end
if #found == 1 then
if kpse.lookup(found[1].filename[1]) then
- logs.report("load font",
- "font family='%s', subfamily='%s' found: %s",
- name, style, found[1].filename[1])
+ report("log", 0, "load font",
+ "font family='%s', subfamily='%s' found: %s",
+ name, style, found[1].filename[1]
+ )
return found[1].filename[1], found[1].filename[2]
end
elseif #found > 1 then
@@ -207,9 +207,10 @@ function names.resolve(_,_,specification) -- the 1st two parameters are used by
end
end
if kpse.lookup(closest.filename[1]) then
- logs.report("load font",
- "font family='%s', subfamily='%s' found: %s",
- name, style, closest.filename[1])
+ report("log", 0, "load font",
+ "font family='%s', subfamily='%s' found: %s",
+ name, style, closest.filename[1]
+ )
return closest.filename[1], closest.filename[2]
end
elseif found.fallback then
@@ -247,7 +248,7 @@ local function font_fullinfo(filename, subfont, texmf)
local t = { }
local f = fontloader.open(filename, subfont)
if not f then
- logs.names_loading("error", "failed to open %s", filename)
+ report("log", 1, "error", "failed to open %s", filename)
return
end
local m = fontloader.to_table(f)
@@ -277,7 +278,7 @@ local function font_fullinfo(filename, subfont, texmf)
end
else
-- no names table, propably a broken font
- logs.names_loading("broken font rejected", "%s", basefile)
+ report("log", 1, "broken font rejected", "%s", basefile)
return
end
t.fontname = m.fontname
@@ -305,9 +306,7 @@ local function load_font(filename, fontnames, newfontnames, texmf)
if filename then
if names.blacklist[filename] or
names.blacklist[basename(filename)] then
- if trace_search then
- logs.report("ignoring font", "%s", filename)
- end
+ report("log", 2, "ignoring font", "%s", filename)
return
end
local timestamp, db_timestamp
@@ -330,7 +329,7 @@ local function load_font(filename, fontnames, newfontnames, texmf)
newmappings[#newmappings+1] = mappings[v]
newstatus[basefile].index[index+1] = #newmappings
end
- logs.names_loading("font already indexed", "%s", basefile)
+ report("log", 1, "font already indexed", "%s", basefile)
return
end
local info = fontloader.info(filename)
@@ -365,7 +364,7 @@ local function load_font(filename, fontnames, newfontnames, texmf)
newstatus[basefile].index[1] = index
end
else
- logs.names_loading("failed to load", "%s", basefile)
+ report("log", 1, "failed to load", "%s", basefile)
end
end
end
@@ -423,10 +422,8 @@ local function read_blacklist()
if string.sub(line,1,1) == "-" then
whitelist[string.sub(line,2,-1)] = true
else
- if trace_search then
- logs.report("blacklisted file", "%s", line)
- end
- blacklist[line] = true
+ report("log", 2, "blacklisted file", "%s", line)
+ blacklist[line] = true
end
end
end
@@ -448,28 +445,24 @@ local installed_fonts_scanned = false
local function scan_installed_fonts(fontnames, newfontnames)
-- Try to query and add font list from operating system.
-- This uses the lualatex-platform module.
- logs.info("Scanning fonts known to operating system...")
+ report("info", 0, "Scanning fonts known to operating system...")
local fonts = get_installed_fonts()
if fonts and #fonts > 0 then
installed_fonts_scanned = true
- if trace_search then
- logs.report("operating system fonts found", "%d", #fonts)
- end
+ report("log", 2, "operating system fonts found", "%d", #fonts)
for key, value in next, fonts do
local file = value.path
if file then
local ext = extname(file)
if ext and font_extensions_set[ext] then
file = path_normalize(file)
- logs.names_loading("loading font", "%s", file)
+ report("log", 1, "loading font", "%s", file)
load_font(file, fontnames, newfontnames, false)
end
end
end
else
- if trace_search then
- logs.report("Could not retrieve list of installed fonts")
- end
+ report("log", 2, "Could not retrieve list of installed fonts")
end
end
@@ -483,28 +476,22 @@ local function scan_dir(dirname, fontnames, newfontnames, texmf)
]]
local list, found = { }, { }
local nbfound = 0
- if trace_search then
- logs.report("scanning", "%s", dirname)
- end
+ report("log", 2, "scanning", "%s", dirname)
for _,i in next, font_extensions do
for _,ext in next, { i, upper(i) } do
found = glob(format("%s/**.%s$", dirname, ext))
-- note that glob fails silently on broken symlinks, which happens
-- sometimes in TeX Live.
- if trace_search then
- logs.report("fonts found", "%s '%s' fonts found", #found, ext)
- end
+ report("log", 2, "fonts found", "%s '%s' fonts found", #found, ext)
nbfound = nbfound + #found
table.append(list, found)
end
end
- if trace_search then
- logs.report("fonts found", "%d fonts found in '%s'", nbfound, dirname)
- end
+ report("log", 2, "fonts found", "%d fonts found in '%s'", nbfound, dirname)
for _,file in next, list do
file = path_normalize(file)
- logs.names_loading("loading font", "%s", file)
+ report("log", 1, "loading font", "%s", file)
load_font(file, fontnames, newfontnames, texmf)
end
end
@@ -515,9 +502,9 @@ local function scan_texmf_fonts(fontnames, newfontnames)
variables OPENTYPEFONTS and TTFONTS of texmf.cnf
]]
if expandpath("$OSFONTDIR"):is_empty() then
- logs.info("Scanning TEXMF fonts...")
+ report("info", 0, "Scanning TEXMF fonts...")
else
- logs.info("Scanning TEXMF and OS fonts...")
+ report("info", 0, "Scanning TEXMF and OS fonts...")
end
local fontdirs = expandpath("$OPENTYPEFONTS"):gsub("^%.", "")
fontdirs = fontdirs .. expandpath("$TTFONTS"):gsub("^%.", "")
@@ -548,9 +535,7 @@ local function read_fonts_conf(path, results)
]]
local f = io.open(path)
if not f then
- if trace_search then
- logs.report("cannot open file", "%s", path)
- end
+ report("log", 2, "cannot open file", "%s", path)
return results
end
local incomments = false
@@ -648,10 +633,8 @@ local function scan_os_fonts(fontnames, newfontnames)
- fontcache for Unix (reads the fonts.conf file and scans the directories)
- a static set of directories for Windows and MacOSX
]]
- logs.info("Scanning OS fonts...")
- if trace_search then
- logs.info("Searching in static system directories...")
- end
+ report("info", 0, "Scanning OS fonts...")
+ report("info", 2, "Searching in static system directories...")
for _,d in next, get_os_dirs() do
scan_dir(d, fontnames, newfontnames, false)
end
@@ -663,7 +646,7 @@ local function update_names(fontnames, force)
- fontnames is the final table to return
- force is whether we rebuild it from scratch or not
]]
- logs.info("Updating the font names database")
+ report("info", 0, "Updating the font names database")
if force then
fontnames = fontnames_init()
@@ -673,10 +656,8 @@ local function update_names(fontnames, force)
end
if fontnames.version ~= names.version then
fontnames = fontnames_init()
- if trace_search then
- logs.report("No font names database or old one found; "
- .."generating new one")
- end
+ report("log", 0, "No font names database or old one found; "
+ .."generating new one")
end
end
local newfontnames = fontnames_init()
@@ -700,10 +681,10 @@ local function save_names(fontnames)
local luaname, lucname = make_name(path)
table.tofile(luaname, fontnames, true)
caches.compile(fontnames,luaname,lucname)
- logs.info("Font names database saved")
+ report("info", 0, "Font names database saved")
return path
else
- logs.info("Failed to save names database")
+ report("info", 0, "Failed to save names database")
return nil
end
end