diff options
author | Karl Berry <karl@freefriends.org> | 2010-07-12 23:52:22 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-07-12 23:52:22 +0000 |
commit | 696c569fe209253982cc2918ad81fc6a3cb98152 (patch) | |
tree | d47fcd42a23f207be0e9503204d6e8321d567be3 /Master/texmf-dist/tex/luatex | |
parent | cf4826af73e7a736518ada18af58ebf98a2c546b (diff) |
luaotfload 1.16 (12jul10)
git-svn-id: svn://tug.org/texlive/trunk@19406 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/luatex')
4 files changed, 39 insertions, 97 deletions
diff --git a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua index 75562d58f3b..4cdbd127de6 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua +++ b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua @@ -21,7 +21,7 @@ module('luaotfload', package.seeall) luaotfload.module = { name = "luaotfload", version = 1.15, - date = "2010/06/28", + date = "2010/07/12", description = "ConTeXt font loading system.", author = "Elie Roux & Hans Hagen", copyright = "Elie Roux", @@ -31,6 +31,9 @@ luaotfload.module = { luatexbase.provides_module(luaotfload.module) +kpse.init_prog('', 600, '/') + + local format = string.format local function log(...) @@ -106,6 +109,11 @@ luaotfload.loadmodule('font-xtx.lua') luaotfload.loadmodule('font-dum.lua') +if fonts and fonts.tfm and fonts.tfm.readers then + fonts.tfm.readers.ofm = fonts.tfm.readers.tfm +end + + luaotfload.loadmodule('font-nms.lua') luaotfload.loadmodule('font-clr.lua') diff --git a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.sty b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.sty index 6ccfa8b4fe2..65260b18e9b 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.sty +++ b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.sty @@ -24,7 +24,7 @@ \else \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{luaotfload}% - [2010/06/28 v1.15 ConTeXt font loading system] + [2010/07/12 v1.16 ConTeXt font loading system] \RequirePackage{luatextra} \fi diff --git a/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-nms.lua b/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-nms.lua index ac3f0ba0b79..1f37d164a75 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-nms.lua +++ b/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-nms.lua @@ -6,20 +6,6 @@ if not modules then modules = { } end modules ['font-nms'] = { license = "GNU GPL v2" } --- This is a patch for otfl-font-def.lua, that defines a reader for ofm fonts, --- this is necessary if we set the forced field of the specification to 'ofm' --- we use it only when using luaotfload, not mkluatexfontdb. -if fonts and fonts.tfm and fonts.tfm.readers then - fonts.tfm.readers.ofm = fonts.tfm.readers.tfm -end - --- This is a necessary initalization in order not to rebuild an existing font. --- Maybe 600 should be replaced by \pdfpkresolution --- or texconfig.pk_dpi (and it should be replaced dynamically), but we don't --- have access (yet) to the texconfig table, so we let it be 600. Anyway, it --- does still work fine even if \pdfpkresolution is changed. -kpse.init_prog('', 600, '/') - fonts = fonts or { } fonts.names = fonts.names or { } @@ -42,7 +28,6 @@ local gmatch, sub, find = string.gmatch, string.sub, string.find local utfgsub = unicode.utf8.gsub local trace_short = false --tracing adapted to rebuilding of the database inside a document -local trace_progress = true --trackers.register("names.progress", function(v) trace_progress = v end) local trace_search = false --trackers.register("names.search", function(v) trace_search = v end) local trace_loading = false --trackers.register("names.loading", function(v) trace_loading = v end) @@ -63,8 +48,6 @@ local function fontnames_init() end function names.load() - -- this sets the output of the database building accordingly. - names.set_log_level(-1) local localpath = file.join(names.path.localdir, names.path.basename) local systempath = file.join(names.path.systemdir, names.path.basename) local kpsefound = kpse.find_file(names.path.basename) @@ -121,7 +104,7 @@ function names.resolve(specification) if type(data) == "table" and data.version == names.version then if data.mappings then local found = { } - for _,face in ipairs(data.mappings) do + for _,face in next, data.mappings do local family = sanitize(face.names.family) local subfamily = sanitize(face.names.subfamily) local fullname = sanitize(face.names.fullname) @@ -201,7 +184,7 @@ function names.resolve(specification) -- least difference from the requested size. local closest local least = math.huge -- initial value is infinity - for i,face in ipairs(found) do + for i,face in next, found do local dsnsize = face.size[1]/10 local difference = math.abs(dsnsize-size) if difference < least then @@ -245,14 +228,9 @@ end names.resolvespec = names.resolve function names.set_log_level(level) - if level == -1 then - trace_progress = false - trace_short = true - elseif level == 2 then - trace_progress = false + if level == 2 then trace_loading = true elseif level >= 3 then - trace_progress = false trace_loading = true trace_search = true end @@ -272,26 +250,6 @@ logs.info = logs.info or log local log = names.log --- The progress bar -local function progress(current, total) - if trace_progress then --- local width = os.getenv("COLUMNS") -2 --doesn't work - local width = 78 - local percent = current/total - local gauge = format("[%s]", rpadd(" ", width, " ")) - if percent > 0 then - local done = rpadd("=", (width * percent) - 1, "=") .. ">" - gauge = format("[%s]", rpadd(done, width, " ") ) - end - if lastislog == 1 then - texio.write_nl("") - lastislog = 0 - end - io.stderr:write("\r"..gauge) - io.stderr:flush() - end -end - local function font_fullinfo(filename, subfont, texmf) local t = { } local f = fontloader.open(filename, subfont) @@ -306,14 +264,14 @@ local function font_fullinfo(filename, subfont, texmf) collectgarbage('collect') -- see http://www.microsoft.com/typography/OTSPEC/features_pt.htm#size if m.fontstyle_name then - for _,v in pairs(m.fontstyle_name) do + for _,v in next, m.fontstyle_name do if v.lang == 1033 then t.fontstyle_name = v.name end end end if m.names then - for _,v in pairs(m.names) do + for _,v in next, m.names do if v.lang == "English (US)" then t.names = { -- see @@ -372,7 +330,7 @@ local function load_font(filename, fontnames, newfontnames, texmf) newstatus[basefile].index = newstatus[basefile].index or { } if db_timestamp == timestamp and not newstatus[basefile].index[1] then - for _,v in ipairs(status[basefile].index) do + for _,v in next, status[basefile].index do local index = #newstatus[basefile].index newmappings[#newmappings+1] = mappings[v] newstatus[basefile].index[index+1] = #newmappings @@ -385,7 +343,7 @@ local function load_font(filename, fontnames, newfontnames, texmf) local info = fontloader.info(filename) if info then if type(info) == "table" and #info > 1 then - for i in ipairs(info) do + for i in next, info do local fullinfo = font_fullinfo(filename, i-1, texmf) local index = newstatus[basefile].index[i] if newstatus[basefile].index[i] then @@ -423,9 +381,8 @@ local function path_normalize(path) - /cygdrive/a/b -> a:/b - reading symlinks under non-Win32 - using kpse.readable_file on Win32 - --]] + ]] if os.type == "windows" or os.type == "msdos" or os.name == "cygwin" then --- path = kpse.readable_file(path) path = path:gsub('\\', '/') path = path:lower() path = path:gsub('^/cygdrive/(%a)/', '%1:/') @@ -479,12 +436,12 @@ local font_extensions = { "otf", "ttf", "ttc", "dfont" } local function scan_dir(dirname, fontnames, newfontnames, texmf) --[[ - this function scans a directory and populates the list of fonts + This function scans a directory and populates the list of fonts with all the fonts it finds. - dirname is the name of the directory to scan - names is the font database to fill - texmf is a boolean saying if we are scanning a texmf directory - --]] + ]] local list, found = { }, { } local nbfound = 0 if trace_search then @@ -517,30 +474,18 @@ end local function scan_texmf_fonts(fontnames, newfontnames) --[[ - The function that scans all fonts in the texmf tree, through kpathsea + This function scans all fonts in the texmf tree, through kpathsea variables OPENTYPEFONTS and TTFONTS of texmf.cnf - --]] - if trace_progress then - if expandpath("$OSFONTDIR"):is_empty() then - logs.report("Scanning TEXMF fonts:") - else - logs.report("Scanning TEXMF and OS fonts:") - end - elseif trace_short then - if expandpath("$OSFONTDIR"):is_empty() then - logs.info("Scanning TEXMF fonts...") - else - logs.info("Scanning TEXMF and OS fonts...") - end + ]] + if expandpath("$OSFONTDIR"):is_empty() then + logs.info("Scanning TEXMF fonts...") + else + logs.info("Scanning TEXMF and OS fonts...") end local fontdirs = expandpath("$OPENTYPEFONTS"):gsub("^\.", "") fontdirs = fontdirs .. expandpath("$TTFONTS"):gsub("^\.", "") if not fontdirs:is_empty() then - fontdirs = splitpath(fontdirs) - count = 0 - for _,d in ipairs(fontdirs) do - count = count + 1 - progress(count, #fontdirs) + for _,d in next, splitpath(fontdirs) do scan_dir(d, fontnames, newfontnames, true) end end @@ -559,12 +504,11 @@ end in OSFONTDIR. ]] ---[[ - This function parses /etc/fonts/fonts.conf and returns all the dir it finds. - The code is minimal, please report any error it may generate. -]] - local function read_fonts_conf(path, results) + --[[ + This function parses /etc/fonts/fonts.conf and returns all the dir it finds. + The code is minimal, please report any error it may generate. + ]] local f = io.open(path) if not f then error("Cannot open the file "..path) @@ -622,8 +566,7 @@ local function read_fonts_conf(path, results) -- be found otherwise read_fonts_conf(include, results) elseif lfs.isdir(include) then - found = glob(file.join(include, "*.conf")) - for _, f in ipairs(found) do + for _,f in next, glob(file.join(include, "*.conf")) do read_fonts_conf(f, results) end end @@ -659,20 +602,12 @@ local function scan_os_fonts(fontnames, newfontnames) This function scans the OS fonts through - fontcache for Unix (reads the fonts.conf file and scans the directories) - a static set of directories for Windows and MacOSX - --]] - if trace_progress then - logs.report("Scanning OS fonts:") - elseif trace_short then - logs.info("Scanning OS fonts...") - end + ]] + logs.info("Scanning OS fonts...") if trace_search then logs.info("Searching in static system directories...") end - count = 0 - local os_dirs = get_os_dirs() - for _,d in ipairs(os_dirs) do - count = count + 1 - progress(count, #os_dirs) + for _,d in next, get_os_dirs() do scan_dir(d, fontnames, newfontnames, false) end end @@ -682,10 +617,9 @@ local function update_names(fontnames, force) The main function, scans everything - fontnames is the final table to return - force is whether we rebuild it from scratch or not - --]] - if trace_short then - logs.info("Updating the font names database:") - end + ]] + logs.info("Updating the font names database:") + if force then fontnames = fontnames_init() else diff --git a/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-xtx.lua b/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-xtx.lua index 8d81e02f98f..8237851c907 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-xtx.lua +++ b/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-xtx.lua @@ -181,7 +181,7 @@ local fontname = (lpeg.P("name:")/isname * (namespec/thename)) + lpeg.P(true)/ local sometext = (lpeg.R("az","AZ","09") + lpeg.S("+-."))^1 local truevalue = lpeg.P("+") * spaces * (sometext/istrue) local falsevalue = lpeg.P("-") * spaces * (sometext/isfalse) -local keyvalue = (lpeg.C(sometext) * spaces * lpeg.P("=") * spaces * lpeg.C(sometext))/iskey +local keyvalue = lpeg.P("+") + (lpeg.C(sometext) * spaces * lpeg.P("=") * spaces * lpeg.C(sometext))/iskey local somevalue = sometext/istrue local subvalue = lpeg.P("(") * (lpeg.C(lpeg.P(1-lpeg.S("()"))^1)/issub) * lpeg.P(")") -- for Kim local option = spaces * (keyvalue + falsevalue + truevalue + somevalue) * spaces |