summaryrefslogtreecommitdiff
path: root/mkluatexfontdb.lua
diff options
context:
space:
mode:
authoreroux <elie.roux@telecom-bretagne.eu>2010-03-09 15:10:21 +0100
committereroux <elie.roux@telecom-bretagne.eu>2010-03-09 15:10:21 +0100
commit51a05b35d2a528915ab3ff0f70761657b2648db9 (patch)
tree44653e4bbc50f1122af6d801db51e794b478240f /mkluatexfontdb.lua
parent12d9a7b7c6744b520ec12cff402cda6efca4e371 (diff)
downloadluaotfload-51a05b35d2a528915ab3ff0f70761657b2648db9.tar.gz
Improvements on the database and on the script
* the info on a font now contains the checksum (might be needed for font caching) * very small optimizations in force mode * database version bumping * a new purge option (not taken into consideration yet) * new mechanism to remove old entries in the database without rebuilding everything, activated all the time but (for performance reasons) will be activated only with the purge options in the very near future.
Diffstat (limited to 'mkluatexfontdb.lua')
-rw-r--r--mkluatexfontdb.lua21
1 files changed, 13 insertions, 8 deletions
diff --git a/mkluatexfontdb.lua b/mkluatexfontdb.lua
index a34b81e..dbfbf02 100644
--- a/mkluatexfontdb.lua
+++ b/mkluatexfontdb.lua
@@ -27,7 +27,7 @@ local version = '1.07' -- same version number as luaotfload
mkluatexfontdb = { } -- just for now, elie is rewriting it anyway
local names = fonts.names
names.basename = names.basename or "otfl-names.lua"
-names.version = names.version or 2.004
+names.version = names.version or 2.005
-- the path to add to TEXMFVAR or TEXMFSYSVAR to get the final directory in
-- normal cases
@@ -54,6 +54,7 @@ Valid options:
-h --help prints this message
--fc-cache run fc-cache before updating database
--no-fc-cache do not run fc-cache (default)
+ -p --purge purge removed fonts
--sys writes the database for the whole system
(default is only for the user)
@@ -75,6 +76,7 @@ end
local long_opts = {
dbdir = "d",
+ purge = "p",
force = "f",
quiet = "q",
verbose = 1,
@@ -85,7 +87,7 @@ local long_opts = {
['no-fc-cache'] = 0,
}
-local short_opts = "d:fqvVh"
+local short_opts = "d:fqpvVh"
-- Function running fc-cache if needed.
-- The argument is nil for default, 0 for no fc-cache and 1 for fc-cache.
@@ -106,6 +108,7 @@ end
-- a temporary variable, containing the command line option concerning fc-cache
local run_fc_cache = 0
local force_reload = nil
+local purge = nil
local function process_cmdline()
local opts, optind, optarg = alt_getopt.get_ordered_opts (arg, short_opts, long_opts)
@@ -129,6 +132,8 @@ local function process_cmdline()
mkluatexfontdb.directory = optarg [i]
elseif v == "f" then
force_reload = 1
+ elseif v == "p" then
+ purge = 1
elseif v == "fc-cache" then
run_fc_cache = 1
elseif v == "no-fc-cache" then
@@ -151,11 +156,11 @@ do_run_fc_cache(run_fc_cache)
-- timestamp, it's uses to save time during update, by not reparsing unchanged fonts.
local status = nil
local status_file = mkluatexfontdb.directory .. "/otfl-names-status.lua"
-if file.isreadable(status_file) then
+if not force_reload and file.isreadable(status_file) then
status = dofile(status_file)
end
-local function generate(force)
+local function generate(force, purge)
log("generating font names database.")
local savepath = mkluatexfontdb.directory
if not lfs.isdir(savepath) then
@@ -174,12 +179,12 @@ local function generate(force)
end
fh:close()
local fontnames
- if kpse.find_file(names.basename) then
+ if kpse.find_file(names.basename) and not force_reload then
fontnames = dofile(kpse.find_file(names.basename))
else
- fontnames = {}
+ fontnames = nil
end
- fontnames, status = names.update(fontnames, force, status)
+ fontnames, status = names.update(fontnames, status, force, purge)
log("%s fonts in %s families in the database",
#fontnames.mappings, #table.keys(fontnames.families))
io.savedata(savepath, table.serialize(fontnames, true))
@@ -187,4 +192,4 @@ local function generate(force)
io.savedata(status_file, table.serialize(status, true))
end
-generate(force_reload)
+generate(force_reload, purge)