diff options
author | Elie Roux <elie.roux@telecom-bretagne.eu> | 2013-04-18 18:09:20 +0200 |
---|---|---|
committer | Elie Roux <elie.roux@telecom-bretagne.eu> | 2013-04-18 18:09:20 +0200 |
commit | a9510469b60edeceedf72811e7737ea0f3c56dc5 (patch) | |
tree | 5c7a80ce3a0c2f1d22c12bff36f84355df554c46 /otfl-features.lua | |
parent | e67643a60422ed265dc5ad8955a83140598385f1 (diff) | |
parent | b0c22678d1f776f991ffef67694451b8bb5f9e20 (diff) | |
download | luaotfload-a9510469b60edeceedf72811e7737ea0f3c56dc5.tar.gz |
Merge branch 'experimental' of phi-gamma/luaotfload into phi-gamma-experimental
Conflicts:
mkluatexfontdb.lua
otfl-basics-gen.lua
Diffstat (limited to 'otfl-features.lua')
-rw-r--r-- | otfl-features.lua | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/otfl-features.lua b/otfl-features.lua new file mode 100644 index 0000000..aae0515 --- /dev/null +++ b/otfl-features.lua @@ -0,0 +1,110 @@ +--[[doc-- +Taken from the most recent branch of luaotfload. +--doc]]-- +local addotffeature = fonts.handlers.otf.addfeature +local registerotffeature = fonts.handlers.otf.features.register + +local everywhere = { ["*"] = { ["*"] = true } } + +local tlig = { + { + type = "substitution", + features = everywhere, + data = { + [0x0022] = 0x201D, -- quotedblright + [0x0027] = 0x2019, -- quoteleft + [0x0060] = 0x2018, -- quoteright + }, + flags = { }, + }, + { + type = "ligature", + features = everywhere, + data = { + [0x2013] = {0x002D, 0x002D}, -- endash + [0x2014] = {0x002D, 0x002D, 0x002D}, -- emdash + [0x201C] = {0x2018, 0x2018}, -- quotedblleft + [0x201D] = {0x2019, 0x2019}, -- quotedblright + [0x201E] = {0x002C, 0x002C}, -- quotedblbase + [0x00A1] = {0x0021, 0x2018}, -- exclamdown + [0x00BF] = {0x003F, 0x2018}, -- questiondown + }, + flags = { }, + }, + { + type = "ligature", + features = everywhere, + data = { + [0x201C] = {0x0060, 0x0060}, -- quotedblleft + [0x201D] = {0x0027, 0x0027}, -- quotedblright + [0x00A1] = {0x0021, 0x0060}, -- exclamdown + [0x00BF] = {0x003F, 0x0060}, -- questiondown + }, + flags = { }, + }, +} + +addotffeature("tlig", tlig) +addotffeature("trep", { }) -- empty, all in tlig now +local anum_arabic = { + [0x0030] = 0x0660, + [0x0031] = 0x0661, + [0x0032] = 0x0662, + [0x0033] = 0x0663, + [0x0034] = 0x0664, + [0x0035] = 0x0665, + [0x0036] = 0x0666, + [0x0037] = 0x0667, + [0x0038] = 0x0668, + [0x0039] = 0x0669, +} + +local anum_persian = { + [0x0030] = 0x06F0, + [0x0031] = 0x06F1, + [0x0032] = 0x06F2, + [0x0033] = 0x06F3, + [0x0034] = 0x06F4, + [0x0035] = 0x06F5, + [0x0036] = 0x06F6, + [0x0037] = 0x06F7, + [0x0038] = 0x06F8, + [0x0039] = 0x06F9, +} + +local function valid(data) + local features = data.resources.features + if features then + for k, v in next, features do + for k, v in next, v do + if v.arab then + return true + end + end + end + end +end + +local anum_specification = { + { + type = "substitution", + features = { arab = { far = true, urd = true, snd = true } }, + data = anum_persian, + flags = { }, + valid = valid, + }, + { + type = "substitution", +features = { arab = { ["*"] = true } }, + data = anum_arabic, + flags = { }, + valid = valid, + }, +} + +addotffeature("anum",anum_specification) + +registerotffeature { + name = 'anum', + description = 'arabic digits', +} |