From 0720db026ba8fc1f2cf3791a8d4d868b8c0c8d4d Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Sun, 16 May 2010 21:50:03 +0300 Subject: Update the database if a font is not found We now try to update the database if a font is not found. --- otfl-font-nms.lua | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/otfl-font-nms.lua b/otfl-font-nms.lua index 20e5fbd..1f9da96 100644 --- a/otfl-font-nms.lua +++ b/otfl-font-nms.lua @@ -67,15 +67,12 @@ function names.load() else logs.report("load font", "no font names database found, generating new one") - local savepath = names.path.localdir .. names.path.basename data = names.update() - io.savedata(savepath, table.serialize(data, true)) + names.save(data) end return data end -local loaded = false - local synonyms = { regular = { normal = true, @@ -96,6 +93,9 @@ local synonyms = { }, } +local loaded = false +local reloaded = false + function names.resolve(specification) local tfm = resolvers.find_file(specification.name, "ofm") local name = sanitize(specification.name) @@ -215,7 +215,25 @@ function names.resolve(specification) return closest.filename[1], closest.filename[2] end end - -- no font found so far, fallback to filename + -- no font found so far + if not reloaded then + -- try reloading the database + names.data = names.update(names.data) + names.save(names.data) + reloaded = true + return names.resolve(specification) + else + -- else, fallback to filename + return specification.name, false + end + end + else + if not reloaded then + names.data = names.update() + names.save(names.data) + reloaded = true + return names.resolve(specification) + else return specification.name, false end end @@ -523,7 +541,7 @@ local function scan_os_fonts(fontnames, newfontnames) end end -local function update(fontnames, force) +local function update_names(fontnames, force) --[[ The main function, scans everything - fontnames is the final table to return @@ -548,5 +566,11 @@ local function update(fontnames, force) return newfontnames end +local function save_names(fontnames) + local savepath = names.path.localdir .. names.path.basename + io.savedata(savepath, table.serialize(fontnames, true)) +end + names.scan = scan_dir -names.update = update +names.update = update_names +names.save = save_names -- cgit v1.2.3