diff options
author | Philipp Gesang <phg@phi-gamma.net> | 2015-11-29 22:04:00 +0100 |
---|---|---|
committer | Philipp Gesang <phg@phi-gamma.net> | 2015-11-29 22:04:03 +0100 |
commit | f7f541616aaf77c5f2ecb40a50f72b2e94575675 (patch) | |
tree | bff29315bc9e6f32768b3abf59a58700c83f2fff | |
parent | fb41f30dd8120532307f6ca1c227cd4807d4f719 (diff) | |
download | luaotfload-f7f541616aaf77c5f2ecb40a50f72b2e94575675.tar.gz |
[loaders] customize define_font reset
This function needn’t be as general for this kind of callback. The new
implementation is simpler but also complains about irregularities like
multiple registered functions.
-rw-r--r-- | src/luaotfload-loaders.lua | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/luaotfload-loaders.lua b/src/luaotfload-loaders.lua index 715aa8a..0ae281e 100644 --- a/src/luaotfload-loaders.lua +++ b/src/luaotfload-loaders.lua @@ -110,13 +110,22 @@ end --doc]]-- -local function reset_callback(name,make_false) - for _,v in pairs(luatexbase.callback_descriptions(name)) - do - luatexbase.remove_from_callback(name,v) - end - if make_false == true then - luatexbase.disable_callback(name) +local purge_define_font = function () + local cdesc = luatexbase.callback_descriptions "define_font" + --- define_font is an “exclusive” callback, meaning that there can + --- only ever be one entry. Everything beyond that would indicate + --- that something is broken. + local _, d = next (cdesc) + if d then + local i, d2 = next (cdesc, 1) + if d2 then --> issue warning + logreport ("both", 0, "loaders", + "Callback table for define_font contains multiple entries: \z + { [%d] = “%s” } -- seems fishy.", i, d2) + end + logreport ("log", 0, "loaders", + "Entry ``%s`` present in define_font callback; overriding.", d) + luatexbase.remove_from_callback ("define_font", d) end end @@ -125,7 +134,7 @@ local install_callbacks = function () local dummy_function = function () end create_callback ("luaotfload.patch_font", "simple", dummy_function) create_callback ("luaotfload.patch_font_unsafe", "simple", dummy_function) - reset_callback "define_font" + purge_define_font () local definer = config.luaotfload.run.definer luatexbase.add_to_callback ("define_font", definers[definer or "patch"], |