From 695045c96cca3d382bd88134133eb480c1e9eae6 Mon Sep 17 00:00:00 2001 From: eroux Date: Mon, 1 Mar 2010 09:16:15 +0100 Subject: Renaming the script mkluatexfontdb --- mkluatexfontdb.lua | 177 ++++++++++++++++++++++++++++++++++++++++ update-luatex-font-database.lua | 177 ---------------------------------------- 2 files changed, 177 insertions(+), 177 deletions(-) create mode 100644 mkluatexfontdb.lua delete mode 100644 update-luatex-font-database.lua diff --git a/mkluatexfontdb.lua b/mkluatexfontdb.lua new file mode 100644 index 0000000..0363f00 --- /dev/null +++ b/mkluatexfontdb.lua @@ -0,0 +1,177 @@ +#!/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) 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) -- cgit v1.2.3