diff options
Diffstat (limited to 'luaotfload-database.lua')
-rw-r--r-- | luaotfload-database.lua | 52 |
1 files changed, 32 insertions, 20 deletions
diff --git a/luaotfload-database.lua b/luaotfload-database.lua index 4632626..1deca07 100644 --- a/luaotfload-database.lua +++ b/luaotfload-database.lua @@ -86,7 +86,7 @@ local tablefastcopy = table.fastcopy local tabletofile = table.tofile local tabletohash = table.tohash local tableserialize = table.serialize - +local runasscript = caches == nil --- the font loader namespace is “fonts”, same as in Context --- we need to put some fallbacks into place for when running --- as a script @@ -127,7 +127,10 @@ local make_luanames = function (path) filereplacesuffix(path, "luc") end -local report = logs.names_report +local report = logs.names_report +local report_status = logs.names_status +local report_status_start = logs.names_status_start +local report_status_stop = logs.names_status_stop names.patterns = { } local patterns = names.patterns @@ -164,7 +167,7 @@ local location_precedence = { created by different user. --doc]]-- -if caches then +if not runasscript then local globals = names.path.globals local names_dir = globals.names_dir @@ -1349,6 +1352,7 @@ local organize_namedata = function (metadata, }, } + -- see http://www.microsoft.com/typography/OTSPEC/features_pt.htm#size if metadata.fontstyle_name then --- not present in all fonts, often differs from the preferred --- subfamily as well as subfamily fields, e.g. with LMSans10-BoldOblique: @@ -1694,6 +1698,7 @@ local read_font_names = function (fullname, local format = stringlower (filesuffix (basename)) local loader = loaders [format] --- ot_fullinfo, t1_fullinfo + local loader = loaders[format] --- ot_fullinfo, t1_fullinfo if not loader then report ("both", 0, "db", "Unknown format: %q, skipping.", format) @@ -2076,27 +2081,25 @@ local scan_dir = function (dirname, currentnames, targetnames, local n_new = 0 --- total of fonts collected local n_found = #found - report ("both", 5, "db", "%d font files detected", n_found) + report ("both", 4, "db", "%d font files detected", n_found) for j=1, n_found do local fullname = found[j] fullname = path_normalize(fullname) local new if dry_run == true then - report ("both", 1, "db", - "Would have been extracting metadata from %q", - fullname) + report_status ("both", "db", + "Would have been loading %q", fullname) else - report ("both", 5, "db", - "Extracting metadata from font %q", fullname) - local new = read_font_names (fullname, currentnames, - targetnames, location) + report_status ("both", "db", "Loading font %q", fullname) + local new = load_font (fullname, fontnames, + newfontnames, texmf) if new == true then n_new = n_new + 1 end end end - - report("both", 5, "db", "%d fonts found in '%s'", n_found, dirname) + report ("both", 4, "db", "Done. %d fonts indexed in %q", + n_found, dirname) return n_found, n_new end @@ -2132,9 +2135,9 @@ local scan_texmf_fonts = function (currentnames, targetnames, dry_run) local osfontdir = kpseexpand_path "$OSFONTDIR" if stringis_empty (osfontdir) then - report ("info", 2, "db", "Scanning TEXMF fonts...") + report ("info", 1, "db", "Scanning TEXMF fonts...") else - report ("info", 2, "db", "Scanning TEXMF and OS fonts...") + report ("info", 1, "db", "Scanning TEXMF and OS fonts...") if logs.get_loglevel () > 3 then local osdirs = filesplitpath (osfontdir) report ("info", 0, "db", @@ -2153,12 +2156,14 @@ local scan_texmf_fonts = function (currentnames, targetnames, dry_run) local tasks = filter_out_pwd (filesplitpath (fontdirs)) report ("info", 3, "db", "Initiating scan of %d directories.", #tasks) + report_status_start (2, 4) for _, d in next, tasks do local found, new = scan_dir (d, currentnames, targetnames, dry_run, "texmf") n_scanned = n_scanned + found n_new = n_new + new end + report_status_stop ("term", "db", "Scanned %d files, %d new.", n_scanned, n_new) end return n_scanned, n_new @@ -2443,12 +2448,14 @@ local scan_os_fonts = function (currentnames, report ("info", 3, "db", "Searching in static system directories...") + report_status_start (2, 4) for _, d in next, get_os_dirs () do local found, new = scan_dir (d, currentnames, targetnames, dry_run) n_scanned = n_scanned + found n_new = n_new + new end + report_status_stop ("term", "db", "Scanned %d files, %d new.", n_scanned, n_new) return n_scanned, n_new end @@ -2519,7 +2526,12 @@ local generate_filedata = function (mappings) barename = filenameonly (fullpath) subfont = entry.subfont end + end + local addmap = function (lst) + --- this will overwrite existing entries + for i=1, #lst do + local idx, base, bare, intexmf, full = unpack(lst[i]) entry.index = index @@ -3078,8 +3090,8 @@ update_names = function (currentnames, force, dry_run) - “targetnames” is the final table to return - force is whether we rebuild it from scratch or not ]] - report ("both", 2, "db", "Updating the font names database" - .. (force and " forcefully" or "")) + report("both", 1, "db", "Updating the font names database" + .. (force and " forcefully" or "")) --- pass 1 get raw data: read font files (normal case) or reuse --- information present in index @@ -3260,9 +3272,9 @@ end --- string -> string -> string list -> bool -> bool local purge_from_cache = function (category, path, list, all) - report("info", 2, "cache", "Luaotfload cache: %s %s", + report("info", 1, "cache", "Luaotfload cache: %s %s", (all and "erase" or "purge"), category) - report("info", 2, "cache", "location: %s",path) + report("info", 1, "cache", "location: %s",path) local n = 0 for i=1,#list do local filename = list[i] @@ -3285,7 +3297,7 @@ local purge_from_cache = function (category, path, list, all) end end end - report("info", 2, "cache", "Removed lua files : %i", n) + report("info", 1, "cache", "Removed lua files : %i", n) return true end |