summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorPhilipp Gesang <phg@phi-gamma.net>2015-11-20 22:05:33 +0100
committerPhilipp Gesang <phg@phi-gamma.net>2015-11-20 22:05:33 +0100
commit4256d04d076d788428d4a8eb9a316da9d52a1622 (patch)
treec7120bd4b8576c85022f936df0e72a40c71bae37 /scripts
parent7baac9244235ce00255a0f61c5931585aa99163c (diff)
parentcf6c8c94cc88db6564ccea266b3c6d8f7a5bb1a1 (diff)
downloadluaotfload-4256d04d076d788428d4a8eb9a316da9d52a1622.tar.gz
Merge pull request #291 from phi-gamma/master
pluggable fontloaders
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/mkcharacters12
-rwxr-xr-xscripts/mkglyphlist2
-rwxr-xr-xscripts/mkimport37
-rwxr-xr-xscripts/mktests67
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