diff options
-rw-r--r-- | luaotfload.dtx | 2 | ||||
-rw-r--r-- | otfl-font-clr.lua | 28 |
2 files changed, 17 insertions, 13 deletions
diff --git a/luaotfload.dtx b/luaotfload.dtx index 477fab4..b2e8dd3 100644 --- a/luaotfload.dtx +++ b/luaotfload.dtx @@ -594,7 +594,7 @@ luaotfload.loadmodule('fonts-cbk.lua') % \textsf{luaotfload} specific modules. % % \begin{macrocode} -%luaotfload.loadmodule("font-clr.lua") +luaotfload.loadmodule("font-clr.lua") % \end{macrocode} % % \subsection{Post-processing TFM table} diff --git a/otfl-font-clr.lua b/otfl-font-clr.lua index a1fd8ff..0e5928f 100644 --- a/otfl-font-clr.lua +++ b/otfl-font-clr.lua @@ -6,15 +6,13 @@ if not modules then modules = { } end modules ['font-clr'] = { license = "GPL" } -fonts.triggers = fonts.triggers or { } -fonts.initializers = fonts.initializers or { } -fonts.initializers.common = fonts.initializers.common or { } +local format = string.format -local initializers, format = fonts.initializers, string.format +local otffeatures = fonts.constructors.newfeatures("otf") +local ids = fonts.hashes.identifiers +local registerotffeature = otffeatures.register -table.insert(fonts.triggers,"color") - -function initializers.common.color(tfmdata,value) +local function setcolor(tfmdata,value) local sanitized if value then @@ -36,8 +34,14 @@ function initializers.common.color(tfmdata,value) end end -initializers.base.otf.color = initializers.common.color -initializers.node.otf.color = initializers.common.color +registerotffeature { + name = "color", + description = "color", + initializers = { + base = setcolor, + node = setcolor, + } +} local function hex2dec(hex,one) if one then @@ -94,8 +98,8 @@ local sbox = node.id('sub_box') local function lookup_next_color(head) for n in node.traverse(head) do if n.id == glyph then - if fonts.identifiers[n.font] and fonts.identifiers[n.font].color then - return fonts.identifiers[n.font].color + if ids[n.font] and ids[n.font].color then + return ids[n.font].color else return -1 end @@ -119,7 +123,7 @@ local function node_colorize(head, current_color, next_color) local next_color_in = lookup_next_color(n.next) or next_color n.list, current_color = node_colorize(n.list, current_color, next_color_in) elseif n.id == glyph then - local tfmdata = fonts.identifiers[n.font] + local tfmdata = ids[n.font] if tfmdata and tfmdata.color then if tfmdata.color ~= current_color then local pushcolor = hex_to_rgba(tfmdata.color) |