diff options
-rw-r--r-- | luaotfload.lua | 41 | ||||
-rw-r--r-- | tests/marks.tex | 7 |
2 files changed, 45 insertions, 3 deletions
diff --git a/luaotfload.lua b/luaotfload.lua index c85041b..f11218e 100644 --- a/luaotfload.lua +++ b/luaotfload.lua @@ -16,6 +16,7 @@ local type, next = type, next local stringfind = string.find local stringsub = string.sub local stringmatch = string.match +local stringformat = string.format local find_file = kpse.find_file local add_to_callback, create_callback = @@ -170,6 +171,41 @@ _G.non_generic_context = { luatex_fonts = { }} --[[doc-- +In its raw form, the font loader will write to the terminal quite +liberally, not using the proper channels (loggers) even of \CONTEXT. +To make it behave we temporarily replace two functions from the +\luafunction{texio} library with wrappers that redirect output to the +log. +Just in case Hans decides to call \luafunction{texio.write*} with the +optional target parameter (which he doesn’t at the moment), we catch the +first argument and skip it where appropriate. +The originals are backed up and restored after loading +\fileent{otfl-fonts.lua}. + +Should we decide to do our own packaging (we’re capable of that +anyways), this will most likely become unnecessary. +--doc]]-- + +local normal_write, normal_write_nl = texio.write, texio.write_nl + +local log_template = "luaotfload: %s" +local fake_write = function (first, rest) + if first == "log" or first == "term" then -- ignore + normal_write("log", stringformat(log_template, rest)) + else + normal_write("log", stringformat(log_template, first)) + end +end +local fake_write_nl = function (first, rest) + if first == "log" or first == "term" then -- ignore + normal_write_nl("log", stringformat(log_template, rest)) + else + normal_write_nl("log", stringformat(log_template, first, rest)) + end +end +texio.write, texio.write_nl = fake_write, fake_write_nl + +--[[doc-- The imported font loader will call \luafunction{callback.register} once while reading \fileent{font-def.lua}. This is unavoidable unless we modify the imported files, but harmless @@ -186,6 +222,11 @@ Now that things are sorted out we can finally load the fontloader. loadmodule"fonts.lua" --[[doc-- +Here we restore the original \luafunction{texio} functions. +--doc]]-- +texio.write, texio.write_nl = normal_write, normal_write_nl + +--[[doc-- By default, the fontloader requires a number of \emphasis{private attributes} for internal use. These must be kept consistent with the attribute handling methods as diff --git a/tests/marks.tex b/tests/marks.tex index 3af264e..9dcf460 100644 --- a/tests/marks.tex +++ b/tests/marks.tex @@ -1,9 +1,10 @@ \input luaotfload.sty \font\test={file:GenBasR.ttf:script=latn} +%font\test={name:AntykwaTorunska:script=latn} \test ä\quad Ä -\test a\char"0308 -\quad A\char"0308 -\quad j\char"0323 +\test a\char"0308 %% -> combining dihaeresis +\quad A\char"0308 %% -> combining dihaeresis +\quad j\char"0323 %% -> combining dot below \bye |