summaryrefslogtreecommitdiff
path: root/tex/context/base/font-otc.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/font-otc.lua')
-rw-r--r--tex/context/base/font-otc.lua16
1 files changed, 15 insertions, 1 deletions
diff --git a/tex/context/base/font-otc.lua b/tex/context/base/font-otc.lua
index 3006e47ca..f7f8e9ce2 100644
--- a/tex/context/base/font-otc.lua
+++ b/tex/context/base/font-otc.lua
@@ -70,6 +70,7 @@ local function addfeature(data,feature,specifications)
local subtables = specification.subtables or { specification.data } or { }
local featuretype = types[specification.type or "substitution"]
local featureflags = specification.flags or noflags
+ local featureorder = specification.order or { feature }
local added = false
local featurename = format("ctx_%s_%s",feature,s)
local st = { }
@@ -133,14 +134,20 @@ local function addfeature(data,feature,specifications)
askedfeatures[k] = table.tohash(v)
end
end
- sequences[#sequences+1] = {
+ local sequence = {
chain = 0,
features = { [feature] = askedfeatures },
flags = featureflags,
name = featurename,
+ order = featureorder,
subtables = st,
type = featuretype,
}
+ if specification.prepend then
+ insert(sequences,1,sequence)
+ else
+ insert(sequences,sequence)
+ end
-- register in metadata (merge as there can be a few)
if not gsubfeatures then
gsubfeatures = { }
@@ -204,7 +211,9 @@ local tlig_specification = {
type = "ligature",
features = everywhere,
data = tlig,
+ order = { "tlig" },
flags = noflags,
+ prepend = true,
}
otf.addfeature("tlig",tlig_specification)
@@ -226,7 +235,9 @@ local trep_specification = {
type = "substitution",
features = everywhere,
data = trep,
+ order = { "trep" },
flags = noflags,
+ prepend = true,
}
otf.addfeature("trep",trep_specification)
@@ -256,6 +267,7 @@ if characters.combined then
type = "ligature",
features = everywhere,
data = tcom,
+ order = { "tcom" },
flags = noflags,
initialize = initialize,
}
@@ -314,6 +326,7 @@ local anum_specification = {
{
type = "substitution",
features = { arab = { urd = true, dflt = true } },
+ order = { "anum" },
data = anum_arabic,
flags = noflags, -- { },
valid = valid,
@@ -321,6 +334,7 @@ local anum_specification = {
{
type = "substitution",
features = { arab = { urd = true } },
+ order = { "anum" },
data = anum_persian,
flags = noflags, -- { },
valid = valid,