diff options
| author | Khaled Hosny <khaledhosny@eglug.org> | 2010-05-16 18:26:00 +0300 | 
|---|---|---|
| committer | Khaled Hosny <khaledhosny@eglug.org> | 2010-05-16 18:28:20 +0300 | 
| commit | 36507882318ca56f0b357846ae62ca21e7cddc0f (patch) | |
| tree | 13c84545617d719a0d86ecd27883e8a40c9e6f30 | |
| parent | 391b8d92bb39d3e6b7eb8a216c028747ad8527fb (diff) | |
| download | luaotfload-36507882318ca56f0b357846ae62ca21e7cddc0f.tar.gz | |
Simplify the code
The |status| table need not to reside in a separate file, it is now part
of the font names database itself.
| -rwxr-xr-x | mkluatexfontdb.lua | 11 | ||||
| -rw-r--r-- | otfl-font-nms.lua | 60 | 
2 files changed, 27 insertions, 44 deletions
diff --git a/mkluatexfontdb.lua b/mkluatexfontdb.lua index a3b6b10..792167b 100755 --- a/mkluatexfontdb.lua +++ b/mkluatexfontdb.lua @@ -130,14 +130,6 @@ end  process_cmdline()  do_run_fc_cache(run_fc_cache) --- the status table is containing correspondances between absolute path and last modification --- timestamp, it's uses to save time during update, by not reparsing unchanged fonts. -local status = nil -local status_file = output_directory .. "/otfl-names-status.lua" -if not force_reload and file.isreadable(status_file) then -    status = dofile(status_file) -end -  local function generate(force)      log("generating font names database.")      local savepath = output_directory @@ -162,11 +154,10 @@ local function generate(force)      else          fontnames = nil      end -    fontnames, status = names.update(fontnames, status, force) +    fontnames = names.update(fontnames, force)      log("%s fonts in the database", #fontnames.mappings)      io.savedata(savepath, table.serialize(fontnames, true))      log("saved font names database in %s\n", savepath) -    io.savedata(status_file, table.serialize(status, true))  end  generate(force_reload) diff --git a/otfl-font-nms.lua b/otfl-font-nms.lua index 977cfab..d708f5b 100644 --- a/otfl-font-nms.lua +++ b/otfl-font-nms.lua @@ -11,7 +11,7 @@ fonts.names          = fonts.names or { }  local names          = fonts.names  local names_dir      = "/luatex/generic/luaotfload/names/" -names.version        = 2.007 -- not the same as in context +names.version        = 2.008 -- not the same as in context  names.data           = nil  names.path           = {      basename  = "otfl-names.lua", @@ -297,9 +297,11 @@ local function font_fullinfo(filename, subfont, texmf)      return t  end -local function load_font(filename, fontnames, status, newfontnames, newstatus, texmf) -    local mappings    = newfontnames and newfontnames.mappings  or { } -    local oldmappings = fontnames.mappings  or { } +local function load_font(filename, fontnames, newfontnames, texmf) +    local newmappings = newfontnames.mappings +    local newstatus   = newfontnames.status +    local mappings    = fontnames.mappings +    local status      = fontnames.status      if filename then          local timestamp, db_timestamp          db_timestamp        = status[filename] and status[filename].timestamp @@ -309,8 +311,8 @@ local function load_font(filename, fontnames, status, newfontnames, newstatus, t          newstatus[filename].index     = {}          if db_timestamp == timestamp then              for _,v in ipairs(status[filename].index) do -                mappings[#mappings+1] = oldmappings[v] -                newstatus[filename].index[#newstatus[filename].index+1] = #mappings +                newmappings[#newmappings+1] = mappings[v] +                newstatus[filename].index[#newstatus[filename].index+1] = #newmappings              end              if trace_loading then                  logs.report("font already indexed: %s", filename) @@ -325,13 +327,13 @@ local function load_font(filename, fontnames, status, newfontnames, newstatus, t              if type(info) == "table" and #info > 1 then                  for i in ipairs(info) do                      local fullinfo = font_fullinfo(filename, i-1, texmf) -                    mappings[#mappings+1] = fullinfo -                    newstatus[filename].index[#newstatus[filename].index+1] = #mappings +                    newmappings[#newmappings+1] = fullinfo +                    newstatus[filename].index[#newstatus[filename].index+1] = #newmappings                  end              else                  local fullinfo = font_fullinfo(filename, false, texmf) -                mappings[#mappings+1] = fullinfo -                newstatus[filename].index[#newstatus[filename].index+1] = #mappings +                newmappings[#newmappings+1] = fullinfo +                newstatus[filename].index[#newstatus[filename].index+1] = #newmappings              end          else              if trace_loading then @@ -360,7 +362,7 @@ end  fonts.path_normalize = path_normalize -local function scan_dir(dirname, fontnames, status, newfontnames, newstatus, texmf) +local function scan_dir(dirname, fontnames, newfontnames, texmf)      --[[      this function scans a directory and populates the list of fonts      with all the fonts it finds. @@ -394,11 +396,11 @@ local function scan_dir(dirname, fontnames, status, newfontnames, newstatus, tex      end      for _,fnt in ipairs(list) do          fnt = path_normalize(fnt) -        load_font(fnt, fontnames, status, newfontnames, newstatus, texmf) +        load_font(fnt, fontnames, newfontnames, texmf)      end  end -local function scan_texmf_tree(fontnames, status, newfontnames, newstatus) +local function scan_texmf_tree(fontnames, newfontnames)      --[[      The function that scans all fonts in the texmf tree, through kpathsea      variables OPENTYPEFONTS and TTFONTS of texmf.cnf @@ -429,7 +431,7 @@ local function scan_texmf_tree(fontnames, status, newfontnames, newstatus)                  if not explored_dirs[d] then                      count = count + 1                      progress(count, #fontdirs) -                    scan_dir(d, fontnames, status, newfontnames, newstatus, false) +                    scan_dir(d, fontnames, newfontnames, false)                      explored_dirs[d] = true                  end              end @@ -438,7 +440,7 @@ local function scan_texmf_tree(fontnames, status, newfontnames, newstatus)              if not explored_dirs[d] then                  count = count + 1                  progress(count, #fontdirs) -                scan_dir(d, fontnames, status, newfontnames, newstatus, true) +                scan_dir(d, fontnames, newfontnames, true)                  explored_dirs[d] = true              end          end @@ -472,7 +474,7 @@ local static_osx_dirs = {   "/System/Library/Fonts",   } -local function scan_os_fonts(fontnames, status, newfontnames, newstatus) +local function scan_os_fonts(fontnames, newfontnames)      --[[      This function scans the OS fonts through fontcache (fc-list), it executes      only if OSFONTDIR is empty (which is the case under most Unix by default). @@ -493,7 +495,7 @@ local function scan_os_fonts(fontnames, status, newfontnames, newstatus)              for _,d in ipairs(static_osx_dirs) do                  count = count + 1                  progress(count, #static_osx_dirs) -                scan_dir(d, fontnames, status, newfontnames, newstatus, false) +                scan_dir(d, fontnames, newfontnames, false)              end          else              if trace_search then @@ -509,7 +511,7 @@ local function scan_os_fonts(fontnames, status, newfontnames, newstatus)              for _,fnt in ipairs(list) do                  count = count + 1                  progress(count, #list) -                load_font(fnt, fontnames, status, newfontnames, newstatus, false) +                load_font(fnt, fontnames, newfontnames, false)              end          end      end @@ -518,41 +520,31 @@ end  local function fontnames_init()      return {          mappings  = { }, +        status    = { },          version   = names.version,      }  end -local function status_init() -    return { -        version   = names.version, -    } -end - -local function update(fontnames, status, force) +local function update(fontnames, force)      --[[      The main function, scans everything      - fontnames is the final table to return      - force is whether we rebuild it from scratch or not -    - status is a table containing the current status of the database      --]]      if force then          fontnames = fontnames_init() -        status = status_init()      else -        if not fontnames or not fontnames.version or fontnames.version ~= names.version -                or not status or not status.version or status.version ~= names.version then +        if not fontnames or not fontnames.version or fontnames.version ~= names.version then              fontnames = fontnames_init() -            status = status_init()              if trace_search then                  logs.report("no font names database or old one found, generating new one")              end          end      end      local newfontnames = fontnames_init() -    local newstatus    = status_init() -    scan_texmf_tree(fontnames, status, newfontnames, newstatus) -    scan_os_fonts  (fontnames, status, newfontnames, newstatus) -    return newfontnames, newstatus +    scan_texmf_tree(fontnames, newfontnames) +    scan_os_fonts  (fontnames, newfontnames) +    return newfontnames  end  names.scan   = scan_dir  | 
