diff options
| -rw-r--r-- | otfl-fonts.lua | 68 | 
1 files changed, 68 insertions, 0 deletions
diff --git a/otfl-fonts.lua b/otfl-fonts.lua new file mode 100644 index 0000000..3152a07 --- /dev/null +++ b/otfl-fonts.lua @@ -0,0 +1,68 @@ +otfl              = otfl or { } +otfl.fonts        = { } + +otfl.fonts.module = { +    name          = "otfl.fonts", +    version       = 1.001, +    date          = "2010/01/10", +    description   = "luaotfload font database.", +    author        = "Khaled Hosny", +    copyright     = "Khaled Hosny", +    license       = "CC0" +} + +kpse.set_program_name("luatex") + +require("l-table.lua") +require("l-io.lua") + +local fnames    = fnames or { } +fnames.mappings = fnames.mappings or { } +fnames.version  = 1.001 + +local function clean(str) +    if str then +        return string.gsub(string.lower(str),"[^%a%d]","") +    end +end + +function otfl.fonts.load(filename,names,force) +    local mappings = names.mappings +    local key +    if filename then +        local i = fontloader.info(filename) +        if i then +            if type(i) == "table" and #i > 1 then +                for k,v in ipairs(i) do +                    key = clean(v.fullname) +                    if not mappings[key] or force then +                        mappings[key] = { v.fullname, filename, k } +                    end +                end + +            else +                key = clean(i.fullname) +                if not mappings[key] or force then +                    mappings[key] = { i.fullname, filename } +                end +            end +        end +    end +end + +function otfl.fonts.reload(list,names) +    for _,v in ipairs(list) do +        otfl.fonts.load(v,names,force) +    end +end + +function otfl.fonts.fontlist() +    local fc = io.popen("fc-list : file") +    local l  = {} +    string.gsub(fc:read("*a"), "(.-): \n", function(h) table.insert(l, h) return "" end) +    fc:close() +    return l +end + +otfl.fonts.reload(otfl.fonts.fontlist(),fnames) +io.savedata("otfl-names.lua", table.serialize(fnames, true))  | 
