summaryrefslogtreecommitdiff
path: root/luaotfload-database.lua
diff options
context:
space:
mode:
Diffstat (limited to 'luaotfload-database.lua')
-rw-r--r--luaotfload-database.lua148
1 files changed, 78 insertions, 70 deletions
diff --git a/luaotfload-database.lua b/luaotfload-database.lua
index 714c37c..d258a19 100644
--- a/luaotfload-database.lua
+++ b/luaotfload-database.lua
@@ -123,26 +123,6 @@ local luaotfloadconfig = config.luaotfload --- always present
luaotfloadconfig.resolver = luaotfloadconfig.resolver or "normal"
luaotfloadconfig.formats = luaotfloadconfig.formats or "otf,ttf,ttc,dfont"
luaotfloadconfig.strip = luaotfloadconfig.strip == true
---- The “termwidth” value is only considered when printing
---- short status messages, e.g. when building the database
---- online.
-if not luaotfloadconfig.termwidth then
- local tw = 79
- if not ( os.type == "windows" --- Assume broken terminal.
- or os.getenv "TERM" == "dumb")
- and iopopen
- then
- local p = iopopen "tput cols"
- if p then
- result = p:read "*all"
- p:close ()
- if result then
- tw = tonumber (result) or tw
- end
- end
- end
- luaotfloadconfig.termwidth = tw
-end
--- this option allows for disabling updates
--- during a TeX run
@@ -176,6 +156,31 @@ local report_status = logs.names_status
local report_status_start = logs.names_status_start
local report_status_stop = logs.names_status_stop
+--- The “termwidth” value is only considered when printing
+--- short status messages, e.g. when building the database
+--- online.
+if not luaotfloadconfig.termwidth then
+ local tw = 79
+ if not ( os.type == "windows" --- Assume broken terminal.
+ or os.getenv "TERM" == "dumb")
+ then
+ local p = iopopen "tput cols"
+ if p then
+ result = tonumber (p:read "*all")
+ p:close ()
+ if result then
+ tw = result
+ else
+ report ("log", 2, "db", "tput returned non-number.")
+ end
+ else
+ report ("log", 2, "db", "Shell escape disabled or tput executable missing.")
+ report ("log", 2, "db", "Assuming 79 cols terminal width.")
+ end
+ end
+ luaotfloadconfig.termwidth = tw
+end
+
names.patterns = { }
local patterns = names.patterns
@@ -226,7 +231,7 @@ if not runasscript then
else
prefix = lpegmatch (stripslashes, prefix)
report ("log", 0, "db",
- "root cache directory is " .. prefix)
+ "Root cache directory is %s.", prefix)
end
globals.prefix = prefix
@@ -566,16 +571,16 @@ load_names = function (dry_run)
if data then
report ("both", 2, "db",
"Font names database loaded", "%s", foundname)
- report ("info", 3, "db", "Loading took %0.f ms",
+ report ("info", 3, "db", "Loading took %0.f ms.",
1000 * (osgettimeofday () - starttime))
local db_version, nms_version = data.meta.version, names.version
if db_version ~= nms_version then
report ("both", 0, "db",
- [[Version mismatch; expected %4.3f, got %4.3f]],
+ [[Version mismatch; expected %4.3f, got %4.3f.]],
nms_version, db_version)
if not fonts_reloaded then
- report ("both", 0, "db", [[Force rebuild]])
+ report ("both", 0, "db", [[Force rebuild.]])
data = update_names ({ }, true, false)
if not data then
report ("both", 0, "db",
@@ -602,7 +607,7 @@ load_lookups = function ( )
local foundname, data = load_lua_file(names.path.lookups.lua)
if data then
report("both", 3, "cache",
- "Lookup cache loaded (%s)", foundname)
+ "Lookup cache loaded from %s.", foundname)
else
report("both", 1, "cache",
"No lookup cache, creating empty.")
@@ -647,12 +652,12 @@ local verbose_lookup = function (data, kind, filename)
found = data.full[found]
if found == nil then --> texmf
report("info", 0, "db",
- "Crude file lookup: req=%s; hit=%s => kpse",
+ "Crude file lookup: req=%s; hit=%s => kpse.",
filename, kind)
found = dummy_findfile(filename)
else
report("info", 0, "db",
- "Crude file lookup: req=%s; hit=%s; ret=%s",
+ "Crude file lookup: req=%s; hit=%s; ret=%s.",
filename, kind, found)
end
return found
@@ -863,9 +868,9 @@ resolve_cached = function (specification)
if success == true then
return basename, found[2], true
end
- report("both", 4, "cache", "Cached file not found; resolving again")
+ report("both", 4, "cache", "Cached file not found; resolving again.")
else
- report("both", 4, "cache", "Not cached; resolving")
+ report("both", 4, "cache", "Not cached; resolving.")
end
--- case 2) cache negative ----------------------------------------
@@ -876,13 +881,13 @@ resolve_cached = function (specification)
end
--- ... then we add the fields to the cache ... ...
local entry = { filename, subfont }
- report("both", 4, "cache", "New entry: %s", request)
+ report("both", 4, "cache", "New entry: %s.", request)
lookup_cache [request] = entry
--- obviously, the updated cache needs to be stored.
--- TODO this should trigger a save only once the
--- document is compiled (finish_pdffile callback?)
- report("both", 5, "cache", "Saving updated cache")
+ report("both", 5, "cache", "Saving updated cache.")
local success = save_lookups ()
if not success then --- sad, but not critical
report("both", 0, "cache", "Error writing cache.")
@@ -1042,7 +1047,7 @@ local resolve_familyname = function (specification, name, style, askedsize)
if not success then
return nil, nil
end
- report ("info", 2, "db", "Match found: %s(%d)",
+ report ("info", 2, "db", "Match found: %s(%d).",
resolved, subfont or 0)
return resolved, subfont
end
@@ -1211,7 +1216,7 @@ reload_db = function (why, caller, ...)
local formats = tableconcat (namedata.meta.formats, ",")
report ("both", 1, "db",
- "Reload initiated (formats: %s); reason: %q",
+ "Reload initiated (formats: %s); reason: %q.",
formats, why)
set_font_filter (formats)
@@ -1308,15 +1313,15 @@ find_closest = function (name, limit)
tablesort(distances)
limit = mathmin(n_distances, limit)
report(false, 1, "query",
- "Displaying %d distance levels", limit)
+ "Displaying %d distance levels.", limit)
for i = 1, limit do
local dist = distances[i]
local namelst = by_distance[dist]
report(false, 0, "query",
- "Distance from \"" .. name .. "\": " .. dist
- .. "\n " .. tableconcat(namelst, "\n ")
- )
+ "Distance from \"%s\": %s\n "
+ .. tableconcat (namelst, "\n "),
+ name, dist)
end
return true
@@ -1335,7 +1340,7 @@ end --- find_closest()
local load_font_file = function (filename, subfont)
local rawfont, _msg = fontloaderopen (filename, subfont)
if not rawfont then
- report ("log", 1, "db", "ERROR: failed to open %s", filename)
+ report ("log", 1, "db", "ERROR: failed to open %s.", filename)
return
end
return rawfont
@@ -1734,7 +1739,7 @@ local read_font_names = function (fullname,
if names.blacklist[fullname] or names.blacklist[basename] then
report("log", 2, "db",
- "Ignoring blacklisted font %q", fullname)
+ "Ignoring blacklisted font %q.", fullname)
return false
end
@@ -1873,7 +1878,7 @@ local create_blacklist = function (blacklist, whitelist)
local result = { }
local dirs = { }
- report("info", 2, "db", "Blacklisting %d files and directories",
+ report("info", 2, "db", "Blacklisting %d files and directories.",
#blacklist)
for i=1, #blacklist do
local entry = blacklist[i]
@@ -1884,7 +1889,7 @@ local create_blacklist = function (blacklist, whitelist)
end
end
- report("info", 2, "db", "Whitelisting %d files", #whitelist)
+ report("info", 2, "db", "Whitelisting %d files.", #whitelist)
for i=1, #whitelist do
result[whitelist[i]] = nil
end
@@ -1933,7 +1938,7 @@ read_blacklist = function ()
line = stringsub(line, 1, cmt - 1)
end
line = stringstrip(line)
- report("log", 2, "db", "Blacklisted file %q", line)
+ report("log", 2, "db", "Blacklisted file %q.", line)
blacklist[#blacklist+1] = line
end
end
@@ -2134,7 +2139,7 @@ local scan_dir = function (dirname, currentnames, targetnames,
dry_run, location)
if lpegmatch (p_blacklist, dirname) then
report ("both", 4, "db",
- "Skipping blacklisted directory %s", dirname)
+ "Skipping blacklisted directory %s.", dirname)
--- ignore
return 0, 0
end
@@ -2144,13 +2149,13 @@ local scan_dir = function (dirname, currentnames, targetnames,
"No such directory: %q; skipping.", dirname)
return 0, 0
end
- report ("both", 4, "db", "Scanning directory %s", dirname)
+ report ("both", 4, "db", "Scanning directory %s.", dirname)
local n_new = 0 --- total of fonts collected
local n_found = #found
local max_fonts = luaotfloadconfig.max_fonts
- report ("both", 4, "db", "%d font files detected", n_found)
+ report ("both", 4, "db", "%d font files detected.", n_found)
for j=1, n_found do
if max_fonts and fonts_read >= max_fonts then
break
@@ -2162,20 +2167,23 @@ local scan_dir = function (dirname, currentnames, targetnames,
if dry_run == true then
local truncated = truncate_string (fullname, 43)
- report_status ("both", "db",
- "Would have been loading %s", truncated)
+ report ("log", 2, "db",
+ "Would have been loading %s.", fullname)
+ report_status ("term", "db",
+ "Would have been loading %s.", truncated)
else
local truncated = truncate_string (fullname, 32)
- report_status ("both", "db", "Loading font %s", truncated)
+ report ("log", 2, "db", "Loading font %s.", fullname)
+ report_status ("term", "db", "Loading font %s.", truncated)
local new = read_font_names (fullname, currentnames,
- targetnames, texmf)
+ targetnames, texmf)
if new == true then
fonts_read = fonts_read + 1
n_new = n_new + 1
end
end
end
- report ("both", 4, "db", "Done. %d fonts indexed in %q",
+ report ("both", 4, "db", "Done. %d fonts indexed in %q.",
n_found, dirname)
return n_found, n_new
end
@@ -2342,7 +2350,7 @@ do --- closure for read_fonts_conf()
local fonts_conf_scanner = function (path)
local fh = ioopen(path, "r")
if not fh then
- report("both", 3, "db", "Cannot open fontconfig file %s", path)
+ report("both", 3, "db", "Cannot open fontconfig file %s.", path)
return
end
local raw = fh:read"*all"
@@ -2350,7 +2358,7 @@ do --- closure for read_fonts_conf()
local confdata = lpegmatch(p_cheapxml, raw)
if not confdata then
- report("both", 3, "db", "Cannot scan fontconfig file %s", path)
+ report("both", 3, "db", "Cannot scan fontconfig file %s.", path)
return
end
return confdata
@@ -3064,17 +3072,17 @@ local collect_statistics = function (mappings)
pprint_top (families, 4, true)
report ("both", 0, "db",
- " · %d different “subfamily” kinds",
+ " · %d different “subfamily” kinds.",
setsize (subfamily))
pprint_top (subfamily, 4)
report ("both", 0, "db",
- " · %d different “prefmodifiers” kinds",
+ " · %d different “prefmodifiers” kinds.",
setsize (prefmodifiers))
pprint_top (prefmodifiers, 4)
report ("both", 0, "db",
- " · %d different “fontstyle_name” kinds",
+ " · %d different “fontstyle_name” kinds.",
setsize (fontstyle_name))
pprint_top (fontstyle_name, 4)
end
@@ -3108,7 +3116,7 @@ update_names = function (currentnames, force, dry_run)
if luaotfloadconfig.update_live == false then
report ("info", 2, "db",
- "Skipping database update")
+ "Skipping database update.")
--- skip all db updates
return currentnames or name_index
end
@@ -3122,7 +3130,7 @@ update_names = function (currentnames, force, dry_run)
- force is whether we rebuild it from scratch or not
]]
report("both", 1, "db", "Updating the font names database"
- .. (force and " forcefully" or ""))
+ .. (force and " forcefully." or "."))
--- pass 1 get raw data: read font files (normal case) or reuse
--- information present in index
@@ -3144,7 +3152,7 @@ update_names = function (currentnames, force, dry_run)
end
if currentnames.meta.version ~= names.version then
report ("both", 1, "db", "No font names database or old "
- .. "one found; generating new one")
+ .. "one found; generating new one.")
currentnames = initialize_namedata (get_font_filter ())
end
end
@@ -3197,7 +3205,7 @@ update_names = function (currentnames, force, dry_run)
local success = save_lookups ()
if success then
logs.names_report ("info", 2, "cache",
- "Lookup cache emptied")
+ "Lookup cache emptied.")
return targetnames
end
end
@@ -3215,18 +3223,18 @@ save_lookups = function ( )
caches.compile (lookup_cache, luaname, lucname)
--- double check ...
if lfsisfile (luaname) and lfsisfile (lucname) then
- report ("both", 3, "cache", "Lookup cache saved")
+ report ("both", 3, "cache", "Lookup cache saved.")
return true
end
- report ("info", 0, "cache", "Could not compile lookup cache")
+ report ("info", 0, "cache", "Could not compile lookup cache.")
return false
end
- report ("info", 0, "cache", "Lookup cache file not writable")
+ report ("info", 0, "cache", "Lookup cache file not writable.")
if not fileiswritable (luaname) then
- report ("info", 0, "cache", "Failed to write %s", luaname)
+ report ("info", 0, "cache", "Failed to write %s.", luaname)
end
if not fileiswritable (lucname) then
- report ("info", 0, "cache", "Failed to write %s", lucname)
+ report ("info", 0, "cache", "Failed to write %s.", lucname)
end
return false
end
@@ -3267,16 +3275,16 @@ save_names = function (currentnames)
if success then
return true
else
- report ("info", 0, "db", "Could not compile font index")
+ report ("info", 0, "db", "Could not compile font index.")
return false
end
end
report ("info", 0, "db", "Index file not writable")
if not fileiswritable (luaname) then
- report ("info", 0, "db", "Failed to write %s", luaname)
+ report ("info", 0, "db", "Failed to write %s.", luaname)
end
if not fileiswritable (lucname) then
- report ("info", 0, "db", "Failed to write %s", lucname)
+ report ("info", 0, "db", "Failed to write %s.", lucname)
end
return false
end
@@ -3310,7 +3318,7 @@ local purge_from_cache = function (category, path, list, all)
local filename = list[i]
if stringfind(filename,"luatex%-cache") then -- safeguard
if all then
- report("info", 5, "cache", "removing %s", filename)
+ report("info", 5, "cache", "Removing %s.", filename)
osremove(filename)
n = n + 1
else
@@ -3319,7 +3327,7 @@ local purge_from_cache = function (category, path, list, all)
local checkname = file.replacesuffix(
filename, "lua", "luc")
if lfsisfile(checkname) then
- report("info", 5, "cache", "Removing %s", filename)
+ report("info", 5, "cache", "Removing %s.", filename)
osremove(filename)
n = n + 1
end
@@ -3455,7 +3463,7 @@ names.show_cache = show_cache
--- replace the resolver from luatex-fonts
if luaotfloadconfig.resolver == "cached" then
- report("both", 2, "cache", "caching of name: lookups active")
+ report("both", 2, "cache", "Caching of name: lookups active.")
names.resolvespec = resolve_cached
names.resolve_name = resolve_cached
else