diff options
| -rw-r--r-- | update-luatex-font-database.lua | 103 | 
1 files changed, 103 insertions, 0 deletions
diff --git a/update-luatex-font-database.lua b/update-luatex-font-database.lua new file mode 100644 index 0000000..c34c1c2 --- /dev/null +++ b/update-luatex-font-database.lua @@ -0,0 +1,103 @@ +#!/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. + +kpse.set_program_name("luatex") + +local name = 'update-luatex-font-database' +local version = '1.07' -- same version number as luaotfload + +-- 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 + +local luaotfload_file = kpse.find_file("luaotfload-fonts.lua") +if not luaotfload_file then +    texio.write_nl("Error: cannot find 'luaotfload-fonts.lua', exiting.") +    os.exit(1) +end +dofile(luaotfload_file) + +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 +  -q --quiet                 don't output anything +  -v --verbose               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 +  --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, luaotfload.fonts.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 function process_cmdline() +    local waiting_for_dir = false +    local cmdargs = {} +    for _, varg in ipairs(arg) do +        if varg == "-v" or varg == "--verbose" then +            cmdargs.loglvl = 2 +        elseif varg == "-vv" then +            cmdargs.loglvl = 3 +        elseif varg == "-vvv" then +            cmdargs.loglvl = 4 +        elseif varg == "-q" or varg == "--quiet" then +            cmdargs.loglvl = 0 +        elseif varg == "--version" or varg == "-V" then +            cmdargs.version = true +        elseif varg == "--help" or varg == "-h" then +            cmdargs.help = true +        elseif varg == "--sys" then +            cmdargs.sys = true +        elseif varg == '-d' or varg == '--dbdir' then +            waiting_for_dir = true +        elseif string.match(varg, '--dbdir=.+') then +            cmdargs.dbdir = string.match(varg, '--dbdir=(.+)') +        elseif string.match(varg, '-d.+') then +            cmdargs.dbdir = string.match(varg, '-d(.+)') +        elseif waiting_for_dir == true then +            cmdargs.dbdir = string.gsub(varg, '^( *= *)', '') +        else +            texio.write_nl(string.format("Unknown option '%s', ignoring.", varg)) +        end +    end +    if cmdargs.help then +        help_msg() +        os.exit(0) +    elseif cmdargs.version then +        version_msg() +        os.exit(0) +    elseif cmdargs.loglvl then +        luaotfload.fonts.log_level = cmdargs.loglvl +    end +    if cmdargs.sys then +        luaotfload.fonts.directory = kpse.expand_var("$TEXMFSYSVAR") .. "/tex/" +    elseif cmdargs.dbdir then +        luaotfload.fonts.directory = cmdargs.dbdir +    end +end + +process_cmdline() +luaotfload.fonts.generate()  | 
