summaryrefslogtreecommitdiff
path: root/update-luatex-font-database.lua
diff options
context:
space:
mode:
Diffstat (limited to 'update-luatex-font-database.lua')
-rw-r--r--update-luatex-font-database.lua177
1 files changed, 0 insertions, 177 deletions
diff --git a/update-luatex-font-database.lua b/update-luatex-font-database.lua
deleted file mode 100644
index 0363f00..0000000
--- a/update-luatex-font-database.lua
+++ /dev/null
@@ -1,177 +0,0 @@
-#!/usr/bin/env texlua
--- This file is copyright 2010 Elie Roux and Khaled Hosny and is under CC0
--- license (see http://creativecommons.org/publicdomain/zero/1.0/legalcode).
---
--- This file is a wrapper for the luaotfload-fonts.lua script.
--- It is part of the luaotfload bundle, please see the luaotfload documentation
--- for more info.
-
---[[
- first we import luaotfload-fonts.lua.
- Basically it 'exports' three usefult things: the two overwritable variables
- - luaotfload.fonts.basename: the filename of the database
- - luaotfload.fonts.directory: the directory of the database
- and the function
- - luaotfload.fonts.generate: the function to generate the database
-]]
-
-kpse.set_program_name("luatex")
-
-require("luaextra")
-require("otfl-font-nms")
-require("alt_getopt")
-
-local name = 'update-luatex-font-database'
-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
-
-local log = logs.report
-
-local function help_msg()
- texio.write_nl(string.format([[Usage: %s [OPTION]...
-
-Rebuild the LuaTeX font database.
-
-Valid options:
- -d --dbdir DIRECTORY writes the database in the specified directory
- -f --force force re-indexing all fonts
- -q --quiet don't output anything
- -v --verbose=LEVEL be more verbose (print the searched directories)
- -vv print the loaded fonts
- -vvv print all steps of directory searching
- -V --version prints the version and exits
- -h --help prints this message
- --fc-cache run fc-cache before updating database
- (default is to run it if available)
- --no-fc-cache do not run fc-cache
- --sys writes the database for the whole system
- (default is only for the user)
-
-The output database file is named otfl-fonts.lua.
-]], name))
-end
-
-local function version_msg()
- texio.write_nl(string.format(
- "%s version %s, database version %s.\n", name, version, names.version))
-end
-
---[[
- Command-line processing.
- Here we fill cmdargs with the good values, and then analyze it, setting
- luaotfload.fonts.log_level luaotfload.fonts.directory if necessary.
-]]
-
-local long_opts = {
- dbdir = "d",
- force = "f",
- quiet = "q",
- verbose = 1,
- version = "V",
- help = "h",
- sys = 0,
- ['fc-cache'] = 0,
- ['no-fc-cache'] = 0,
-}
-
-local short_opts = "d:fqvVh"
-
--- Function running fc-cache if needed.
--- The argument is nil for default, 0 for no fc-cache and 1 for fc-cache.
--- Default behaviour is to run fc-cache if available.
-local function do_run_fc_cache(c)
- if c == 0 then return end
- if not c then
- -- TODO: detect if fc-cache is available
- end
- local toexec = 'fc-cache'
- if system == 'windows' then
- toexec = 'fc-cache.exe' -- TODO: to test on a non-cygwin Windows
- end
- log('executing %s...\n', toexec)
- os.execute(toexec)
-end
-
--- a temporary variable, containing the command line option concerning fc-cache
-local run_fc_cache = nil
-local force_reload = nil
-
-local function process_cmdline()
- local opts, optind, optarg = alt_getopt.get_ordered_opts (arg, short_opts, long_opts)
- local log_level = 1
- for i,v in ipairs(opts) do
- if v == "q" then
- log_level = 0
- elseif v == "v" then
- if log_level > 0 then
- log_level = log_level + 1
- else
- log_level = 2
- end
- elseif v == "V" then
- version_msg()
- os.exit(0)
- elseif v == "h" then
- help_msg()
- os.exit(0)
- elseif v == "d" then
- mkluatexfontdb.directory = optarg [i]
- elseif v == "f" then
- force_reload = 1
- elseif v == "fc-cache" then
- run_fc_cache = 1
- elseif v == "no-fc-cache" then
- run_fc_cache = 0
- elseif v == "sys" then
- mkluatexfontdb.directory = kpse.expand_var("$TEXMFSYSVAR") .. mkluatexfontdb.subtexmfvardir
- end
- end
- if string.match(arg[0], '-sys') then
- mkluatexfontdb.directory = kpse.expand_var("$TEXMFSYSVAR") .. mkluatexfontdb.subtexmfvardir
- end
- names.log_level = log_level
-end
-
-process_cmdline()
-do_run_fc_cache(run_fc_cache)
-
--- the path to add to TEXMFVAR or TEXMFSYSVAR to get the final directory in
--- normal cases
-mkluatexfontdb.subtexmfvardir = "/tex/"
-
--- the directory in which the database will be saved, can be overwritten
-mkluatexfontdb.directory = kpse.expand_var("$TEXMFVAR") .. mkluatexfontdb.subtexmfvardir
-
-
-local function generate(force)
- log("generating font names database.")
- local savepath = mkluatexfontdb.directory
- if not lfs.isdir(savepath) then
- log("creating directory %s", savepath)
- lfs.mkdir(savepath)
- if not lfs.isdir(savepath) then
- texio.write_nl(string.format("Error: cannot create directory '%s', exiting.\n", savepath))
- os.exit(1)
- end
- end
- savepath = savepath .. '/' .. names.basename
- local fh = io.open(savepath, 'a+')
- if not fh then
- texio.write_nl(string.format("Error: cannot write file '%s', exiting.\n", savepath))
- os.exit(1)
- end
- fh:close()
- local fontnames
- fontnames = dofile(kpse.find_file(names.basename))
- fontnames = names.update (fontnames, force)
- log("%s fonts in %s families saved in the database",
- #fontnames.mappings, #table.keys(fontnames.families))
- io.savedata(savepath, table.serialize(fontnames, true))
- log("saved font names database in %s\n", savepath)
-end
-
-generate(force_reload)