diff options
-rwxr-xr-x | fontdbutil.lua | 38 | ||||
-rw-r--r-- | luaotfload-database.lua | 28 | ||||
-rw-r--r-- | luaotfload-override.lua | 2 |
3 files changed, 43 insertions, 25 deletions
diff --git a/fontdbutil.lua b/fontdbutil.lua index fed1840..d76678f 100755 --- a/fontdbutil.lua +++ b/fontdbutil.lua @@ -119,6 +119,8 @@ This tool is part of the luaotfload package. Valid options are: -V --version print version and exit -h --help print this message + --alias=<name> force behavior of “fontdbutil” or legacy + “mkluatexfontdb” ------------------------------------------------------------------------------- DATABASE @@ -152,6 +154,8 @@ Valid options: -vvv print all steps of directory searching -V --version print version and exit -h --help print this message + --alias=<name> force behavior of “fontdbutil” or legacy + “mkluatexfontdb” The font database will be saved to %s @@ -187,10 +191,10 @@ local show_font_info = function (filename) local fontinfo = fontloader.info(fullname) local nfonts = #fontinfo if nfonts > 0 then -- true type collection - logs.names_report(true, 0, "resolve", + logs.names_report(true, 1, "resolve", [[%s is a font collection]], filename) for n = 1, nfonts do - logs.names_report(true, 0, "resolve", + logs.names_report(true, 1, "resolve", [[showing info for font no. %d]], n) show_info_items(fontinfo[n]) end @@ -198,7 +202,7 @@ local show_font_info = function (filename) show_info_items(fontinfo) end else - logs.names_report(true, 0, "resolve", + logs.names_report(true, 1, "resolve", "font %s not found", filename) end end @@ -221,7 +225,7 @@ local actions = { } --- (jobspec -> (bool * bool)) list actions.loglevel = function (job) logs.set_loglevel(job.log_level) - logs.names_report("log", 2, "util", + logs.names_report("info", 3, "util", "setting log level", "%d", job.log_level) return true, true end @@ -239,7 +243,7 @@ end actions.generate = function (job) local fontnames, savedname fontnames = names.update(fontnames, job.force_reload) - logs.names_report("log", 0, "db", + logs.names_report("info", 2, "db", "Fonts in the database: %i", #fontnames.mappings) savedname = names.save(fontnames) if savedname then --- FIXME have names.save return bool @@ -262,18 +266,18 @@ actions.query = function (job) fonts.names.resolve(nil, nil, tmpspec) if success then - logs.names_report(false, 0, + logs.names_report(false, 1, "resolve", "Font “%s” found!", query) - logs.names_report(false, 0, + logs.names_report(false, 1, "resolve", "Resolved file name “%s”:", foundname) if job.show_info then show_font_info(foundname) end else - logs.names_report(false, 0, + logs.names_report(false, 1, "resolve", "Cannot find “%s”.", query) if job.fuzzy == true then - logs.names_report(false, 2, + logs.names_report(false, 1, "resolve", "Looking for close matches, this may take a while ...") local success = fonts.names.find_closest(query, job.fuzzy_limit) end @@ -295,14 +299,11 @@ local process_cmdline = function ( ) -- unit -> jobspec local result = { -- jobspec force_reload = nil, query = "", - log_level = 1, + log_level = 1, --- 2 is approx. the old behavior } - if config.luaotfload.self == "mkluatexfontdb" then - action_pending["generate"] = true - end - local long_options = { + alias = 1, find = 1, force = "f", fuzzy = "F", @@ -363,8 +364,17 @@ local process_cmdline = function ( ) -- unit -> jobspec end elseif v == "i" then result.show_info = true + elseif v == "alias" then + config.luaotfload.self = optarg[n] end end + + if config.luaotfload.self == "mkluatexfontdb" then + action_pending["generate"] = true + print(result.log_level) + result.log_level = math.max(2, result.log_level) + print(result.log_level) + end return result end diff --git a/luaotfload-database.lua b/luaotfload-database.lua index d731038..e8f3d1d 100644 --- a/luaotfload-database.lua +++ b/luaotfload-database.lua @@ -201,10 +201,10 @@ load_names = function ( ) if data then report("info", 1, "db", "Font names database loaded", "%s", foundname) - report("info", 1, "db", "Loading took %0.f ms", + report("info", 3, "db", "Loading took %0.f ms", 1000*(os.gettimeofday()-starttime)) else - report("info", 0, "db", + report("info", 1, "db", [[Font names database not found, generating new one. This can take several minutes; please be patient.]]) data = update_names(fontnames_init()) @@ -398,6 +398,7 @@ resolve = function (_,_,specification) -- the 1st two parameters are used by Con maxsize = optsize[2] and optsize[2] / 10 or dsnsize minsize = optsize[3] and optsize[3] / 10 or dsnsize end + if name == family then if subfamily == style then if optsize then @@ -413,7 +414,8 @@ resolve = function (_,_,specification) -- the 1st two parameters are used by Con break end elseif synonym_set[style] and - synonym_set[style][subfamily] then + synonym_set[style][subfamily] + then if optsize then if dsnsize == size or (size > minsize and size <= maxsize) then @@ -429,7 +431,13 @@ resolve = function (_,_,specification) -- the 1st two parameters are used by Con elseif subfamily == "regular" or synonym_set.regular[subfamily] then found.fallback = face + elseif name == fullname then + --- happens with Libertine Mono which has + --- “mono” as subfamily + found[1] = face + break end + else if name == fullname or name == pfullname @@ -930,9 +938,9 @@ local function scan_texmf_fonts(fontnames, newfontnames) variables OPENTYPEFONTS and TTFONTS of texmf.cnf ]] if stringis_empty(kpseexpand_path("$OSFONTDIR")) then - report("info", 1, "db", "Scanning TEXMF fonts...") + report("info", 2, "db", "Scanning TEXMF fonts...") else - report("info", 1, "db", "Scanning TEXMF and OS fonts...") + report("info", 2, "db", "Scanning TEXMF and OS fonts...") end local fontdirs = stringgsub(kpseexpand_path("$OPENTYPEFONTS"), "^%.", "") fontdirs = fontdirs .. stringgsub(kpseexpand_path("$TTFONTS"), "^%.", "") @@ -1083,8 +1091,8 @@ local function scan_os_fonts(fontnames, newfontnames) - fontcache for Unix (reads the fonts.conf file and scans the directories) - a static set of directories for Windows and MacOSX ]] - report("info", 1, "db", "Scanning OS fonts...") - report("info", 2, "db", "Searching in static system directories...") + report("info", 2, "db", "Scanning OS fonts...") + report("info", 3, "db", "Searching in static system directories...") for _,d in next, get_os_dirs() do local found, new = scan_dir(d, fontnames, newfontnames, false) n_scanned = n_scanned + found @@ -1102,7 +1110,7 @@ update_names = function (fontnames, force) - “newfontnames” is the final table to return - force is whether we rebuild it from scratch or not ]] - report("info", 1, "db", "Updating the font names database" + report("info", 2, "db", "Updating the font names database" .. (force and " forcefully" or "")) if force then @@ -1136,9 +1144,9 @@ update_names = function (fontnames, force) --- before rewrite | after rewrite --- partial: 804 ms | 701 ms --- forced: 45384 ms | 44714 ms - report("info", 1, "db", + report("info", 3, "db", "Scanned %d font files; %d new entries.", n_scanned, n_new) - report("info", 1, "db", + report("info", 3, "db", "Rebuilt in %0.f ms", 1000*(os.gettimeofday()-starttime)) return newfontnames end diff --git a/luaotfload-override.lua b/luaotfload-override.lua index 4953edf..726000d 100644 --- a/luaotfload-override.lua +++ b/luaotfload-override.lua @@ -69,7 +69,7 @@ logs.names_report = function (mode, lvl, ...) end if not lvl then lvl = 0 end - if loglevel > lvl then + if loglevel >= lvl then if mode == "log" then log (...) elseif mode == "both" then |