diff options
| author | Philipp Gesang <phg42.2a@gmail.com> | 2013-04-22 15:15:22 +0200 | 
|---|---|---|
| committer | Philipp Gesang <phg42.2a@gmail.com> | 2013-04-22 15:15:22 +0200 | 
| commit | 4f0774100b6000784cf29bcc8677e63a3169f21a (patch) | |
| tree | d44e49e7a820b5cf92ee5733d43af13a6efc70a0 /luaotfload-features.lua | |
| parent | 655ab8e887944e82c48d4d5c1745e00c771dbae0 (diff) | |
| download | luaotfload-4f0774100b6000784cf29bcc8677e63a3169f21a.tar.gz | |
migrate files from ‘otfl’ to ‘luaotfload’ prefix
Diffstat (limited to 'luaotfload-features.lua')
| -rw-r--r-- | luaotfload-features.lua | 110 | 
1 files changed, 110 insertions, 0 deletions
diff --git a/luaotfload-features.lua b/luaotfload-features.lua new file mode 100644 index 0000000..aae0515 --- /dev/null +++ b/luaotfload-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', +}  | 
