summaryrefslogtreecommitdiff
path: root/tex/context/base/typo-itc.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/typo-itc.lua')
-rw-r--r--tex/context/base/typo-itc.lua27
1 files changed, 16 insertions, 11 deletions
diff --git a/tex/context/base/typo-itc.lua b/tex/context/base/typo-itc.lua
index 452b623c8..b39ea2f23 100644
--- a/tex/context/base/typo-itc.lua
+++ b/tex/context/base/typo-itc.lua
@@ -28,8 +28,7 @@ local insert_node_after = node.insert_after
local delete_node = nodes.delete
local end_of_math = node.end_of_math
-local texgetattribute = tex.getattribute
-local texsetattribute = tex.setattribute
+local texattribute = tex.attribute
local a_italics = attributes.private("italics")
local unsetvalue = attributes.unsetvalue
@@ -82,7 +81,7 @@ end
-- todo: clear attribute
-function italics.handler(head)
+local function process(namespace,attribute,head)
local done = false
local italic = 0
local lastfont = nil
@@ -121,7 +120,7 @@ function italics.handler(head)
lastfont = font
end
if data then
- local attr = forcedvariant or current[a_italics]
+ local attr = forcedvariant or current[attribute]
if attr and attr > 0 then
local cd = data[char]
if not cd then
@@ -200,16 +199,22 @@ function italics.set(n)
enable()
end
if n == variables.reset then
- texsetattribute(a_italics,unsetvalue)
+ texattribute[a_italics] = unsetvalue
else
- texsetattribute(a_italics,tonumber(n) or unsetvalue)
+ texattribute[a_italics] = tonumber(n) or unsetvalue
end
end
function italics.reset()
- texsetattribute(a_italics,unsetvalue)
+ texattribute[a_italics] = unsetvalue
end
+italics.handler = nodes.installattributehandler {
+ name = "italics",
+ namespace = italics,
+ processor = process,
+}
+
local variables = interfaces.variables
local settings_to_hash = utilities.parsers.settings_to_hash
@@ -226,10 +231,10 @@ function commands.setupitaliccorrection(option) -- no grouping !
end
if options[variables.global] then
forcedvariant = variant
- texsetattribute(a_italics,unsetvalue)
+ texattribute[a_italics] = unsetvalue
else
forcedvariant = false
- texsetattribute(a_italics,variant)
+ texattribute[a_italics] = variant
end
if trace_italics then
report_italics("forcing %a, variant %a",forcedvariant,variant ~= unsetvalue and variant)
@@ -241,11 +246,11 @@ end
local stack = { }
function commands.pushitaliccorrection()
- table.insert(stack,{forcedvariant, texgetattribute(a_italics) })
+ table.insert(stack,{forcedvariant, texattribute[a_italics] })
end
function commands.popitaliccorrection()
local top = table.remove(stack)
forcedvariant = top[1]
- texsetattribute(a_italics,top[2])
+ texattribute[a_italics] = top[2]
end