diff options
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/mkcharacters | 12 | ||||
-rwxr-xr-x | scripts/mkglyphlist | 2 | ||||
-rwxr-xr-x | scripts/mkimport | 37 | ||||
-rwxr-xr-x | scripts/mktests | 67 |
4 files changed, 95 insertions, 23 deletions
diff --git a/scripts/mkcharacters b/scripts/mkcharacters index abed2c9..59582f2 100755 --- a/scripts/mkcharacters +++ b/scripts/mkcharacters @@ -5,8 +5,6 @@ -- DESCRIPTION: import parts of char-def.lua -- REQUIREMENTS: lua, ConTeXt, the lualibs package -- AUTHOR: Philipp Gesang (Phg), <phg42.2a@gmail.com> --- VERSION: 2.5 --- MODIFIED: 2014-02-11 07:24:25+0100 ----------------------------------------------------------------------- -- we create a stripped-down version of char-def.lua ----------------------------------------------------------------------- @@ -15,7 +13,7 @@ -- config ----------------------------------------------------------------------- local charfile = "./build/luaotfload-characters.lua" -local chardef = "/home/phg/base/char-def.lua" +local chardef = arg[1] --- for every code point char-def.lua provides a set of fields. they --- are: @@ -65,6 +63,11 @@ for _, lib in next, { "lualibs-lua.lua", require(found) end +if not chardef then + chardef = kpse.expand_path("~/context/tex/texmf-context/tex/context/base/") + .. "/char-def.lua" +end + if not (chardef and lfs.isfile(chardef)) then --- we could grab the file from contextgarden but as Context is part --- of TL it’s not worth bothering @@ -72,6 +75,9 @@ if not (chardef and lfs.isfile(chardef)) then "Could not find ConTeXt.") end +io.write(string.format("extracting data from char-def.lua at %s\n", + chardef)) + ----------------------------------------------------------------------- -- functionality ----------------------------------------------------------------------- diff --git a/scripts/mkglyphlist b/scripts/mkglyphlist index 8fde098..f66a686 100755 --- a/scripts/mkglyphlist +++ b/scripts/mkglyphlist @@ -5,8 +5,6 @@ -- DESCRIPTION: part of the luaotfload package -- REQUIREMENTS: lua, lpeg, luasocket, the lualibs package -- AUTHOR: Philipp Gesang (Phg), <phg42.2a@gmail.com> --- VERSION: 2.5 --- MODIFIED: 2014-02-11 06:44:50+0100 ----------------------------------------------------------------------- -- interesting thread on the Context list: -- http://www.ntg.nl/pipermail/ntg-context/2008/029057.html diff --git a/scripts/mkimport b/scripts/mkimport index 0833ccb..9ea224a 100755 --- a/scripts/mkimport +++ b/scripts/mkimport @@ -5,8 +5,6 @@ -- DESCRIPTION: check luaotfload imports against Context -- REQUIREMENTS: luatex, the lualibs package, Context MkIV -- AUTHOR: Philipp Gesang (Phg), <phg@phi-gamma.net> --- VERSION: 42 --- CREATED: 2014-12-08 22:36:15+0100 ------------------------------------------------------------------------------- -- @@ -53,7 +51,7 @@ local tableconcat = table.concat -- config ------------------------------------------------------------------------------- -local context_root = "/home/phg/context/tex/texmf-context" +local parms = { } local our_prefix = "fontloader" local luatex_fonts_prefix = "luatex" local fontloader_subdir = "src/fontloader" @@ -71,7 +69,6 @@ local subdirs = { local searchdirs = { --- order is important! fontloader_subdir, - context_root } local prefixes = { @@ -261,7 +258,7 @@ end local derive_category_path = function (cat) local subpath = origin_paths[cat] or die ("category " .. cat .. " unknown") - local location = file.join (context_root, subpath) + local location = file.join (parms.context_root, subpath) if not lfsisdir (location) then die ("invalid base path defined for category " .. cat .. " at " .. location) @@ -484,7 +481,8 @@ end --[[ [local import_file = function (name, kind)] ]] local import = function (arg) if #arg > 1 then - local name = arg[2] or die ("invalid filename " .. tostring (arg[2])) + local tgt = parms.target + local name = tgt or die ("invalid filename " .. tostring (tgt)) local stat = import_file (name) if stat == import_failed then die ("failed to import file " .. name) @@ -528,10 +526,10 @@ local search_paths = function (target) end - local found = find_in_path (context_root, origin_paths.context, target) + local found = find_in_path (parms.context_root, origin_paths.context, target) if found then return found end - local found = find_in_path (context_root, origin_paths.fontloader, target) + local found = find_in_path (parms.context_root, origin_paths.fontloader, target) if found then return found end return false end @@ -658,7 +656,7 @@ local describe = function (target, location) end local tell = function (arg) - local target = arg[2] + local target = parms.target if not target then die "no filename given" end local location = search (target) @@ -848,12 +846,31 @@ local check_job = function (j) return job_kind[j] or die ("invalid job type “%s”.", j) end +local parse_argv = function (argv) + local job + local tgt + local pth + + local argc = #arg + if argc < 1 or argc > 3 then return "help" end + job = arg[1] or "help" + if argc > 1 then + tgt = arg[2] + if argc == 3 then pth = arg[3] end + end + if not pth then pth = "~/context/tex/texmf-context" end + parms.context_root = kpse.expand_path (pth) + parms.target = tgt + searchdirs [#searchdirs + 1] = pth + return job +end + ------------------------------------------------------------------------------- -- entry point ------------------------------------------------------------------------------- local main = function () - local job = arg[1] or "help" + local job = parse_argv (arg) local runner = check_job (job) return runner(arg) end diff --git a/scripts/mktests b/scripts/mktests index b36b6dd..ad8c4f5 100755 --- a/scripts/mktests +++ b/scripts/mktests @@ -5,8 +5,6 @@ -- DESCRIPTION: test the behavior of Luaotfload -- REQUIREMENTS: Luatex > 0.76, Luaotfload -- AUTHOR: Philipp Gesang (Phg), <phg42.2a@gmail.com> --- VERSION: 2.4 --- MODIFIED: 2014-05-15 22:16:47+0200 ----------------------------------------------------------------------- -- --===================================================================-- @@ -20,14 +18,68 @@ local tests = { } local lpeg = require "lpeg" local lpegmatch = lpeg.match +config = { luaotfload = { } } +luatexbase = { } + kpse.set_program_name "luatex" require "lualibs" require "luaotfload-basics-gen.lua" require "luaotfload-log.lua" -require "luaotfload-parsers" -require "luaotfload-configuration" -require "luaotfload-database" + +fonts = { names = { } } -- for db; normally provided by the fontloaders + +local require_init = { } + +local loadmodule = function (name) + local v = require ("luaotfload-" .. name) + if v then + local mod = { } + local tv = type (v) + if tv == "table" then + mod.name = name + mod.init = v.init + require_init [#require_init + 1] = mod + elseif tv == "function" then + mod.name = name + mod.init = v + require_init [#require_init + 1] = mod + end + end +end + +require "alt_getopt" + +loadmodule "log.lua" --- this populates the luaotfload.log.* namespace +loadmodule "parsers" --- fonts.conf, configuration, and request syntax +loadmodule "configuration" --- configuration file handling +loadmodule "database" +loadmodule "resolvers" --- Font lookup + +do --- init_modules + --- NB we don’t command the logger at this point. + local todo = #require_init + local ret = true + for i = 1, todo do + local mod = require_init[i] + local name = mod.name + local init = mod.init + if type (init) ~= "function" then + error ("luaotfload broken; module " + .. name .. " missing initializers!") + end + local v = mod.init () + if v == true then + --- evaluated well + elseif type (v) == "table" then + luaotfload[name] = v + else + error ("luaotfload broken; initialization of module " + .. name .. " returned " .. tostring (v) .. ".") + return false + end + end +end local names = fonts.names @@ -236,7 +288,6 @@ local default_spec = { local resolve_font_name = function () local failed, total = 0, 0 - local resolve_name = names.resolve_name for nset = 1, #font_name_tests do local set = font_name_tests[nset] @@ -248,7 +299,7 @@ local resolve_font_name = function () local input_spec = table.copy (default_spec) input_spec.name = input input_spec.specification = input_spec.lookup .. ":" .. input - local result = resolve_name (input_spec) == output + local result = fonts.names.lookup_font_name (input_spec) == output total = total + 1 if not result then failed = failed + 1 @@ -262,7 +313,7 @@ local resolve_font_name = function () .. ":" .. input_spec.name input_spec.optsize = input_spec.optsize or default_spec.optsize input_spec.style = translate_style [input_spec.style] - local result = resolve_name (input_spec) == output + local result = fonts.names.lookup_font_name (input_spec) == output total = total + 1 if not result then failed = failed + 1 |