From 8b17e4fc3aa9e72f9b20fd8c6d1ced666e08795a Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Thu, 21 Apr 2011 04:06:47 +0200 Subject: Hack to support Demi fonts --- otfl-font-nms.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/otfl-font-nms.lua b/otfl-font-nms.lua index 0e4bbda..2ad6898 100644 --- a/otfl-font-nms.lua +++ b/otfl-font-nms.lua @@ -76,9 +76,9 @@ end local synonyms = { regular = { "normal", "roman", "plain", "book", "medium" }, - bold = { "boldregular" }, - italic = { "regularitalic", "normalitalic", "oblique", "slant" }, - bolditalic = { "boldoblique", "boldslat" }, + bold = { "boldregular", "demi" }, + italic = { "regularitalic", "normalitalic", "oblique", "slanted" }, + bolditalic = { "boldoblique", "boldslanted", "demiitalic", "demioblique", "demislanted" }, } local loaded = false -- cgit v1.2.3 From 56ac30d7665e2b9dd5c238372203405518503e8d Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Thu, 21 Apr 2011 04:12:03 +0200 Subject: Remove some misleading text, one should read the manual instead --- mkluatexfontdb.lua | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/mkluatexfontdb.lua b/mkluatexfontdb.lua index dc46ac0..553332d 100755 --- a/mkluatexfontdb.lua +++ b/mkluatexfontdb.lua @@ -33,25 +33,6 @@ Valid options: -V --version print version and exit -h --help print this message -Fonts are searched in directories on Windows or Linux that have been -searched with fontconfig. - -On Mac OS X, only fonts located in the following standard font locations are -included in the font database: - ~/Library/Fonts /Library/Fonts - /System/Library/Fonts /Network/Library/Fonts -In particular, fonts installed in other locations with "Font Book" will not -be available. - -Rather than using the fontconfig locations or, in Mac OS X, searching the -default system font locations, you may specify where fonts are located by -setting the OSFONTDIR environment variable. Doing so will override the use of -fontconfig or scanning the system font locations. If you wish to continue to -include them while also including other font locations, simply include them in -the list. For example (using a bash shell), - - export OSFONTDIR='/path/to/other/fonts:/Users/will/Library/Fonts:...' - The output database file is named otfl-fonts.lua and is placed under: %s" -- cgit v1.2.3 From acca6bfc8c0efcbb4e877dd97fcf945194f8ba8b Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Thu, 21 Apr 2011 06:59:53 +0200 Subject: Temporarly add this code back, I want to make a release --- luaotfload.dtx | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/luaotfload.dtx b/luaotfload.dtx index 586b8be..548251d 100644 --- a/luaotfload.dtx +++ b/luaotfload.dtx @@ -675,6 +675,32 @@ luatexbase.add_to_callback("find_vf_file", fonts.vf.find, "luaotfload.find_vf_file") % \end{macrocode} +% XXX: see https://github.com/wspr/unicode-math/issues/185 +% +% \luatex does not provide interface to accessing +% |(Script)ScriptPercentScaleDown| math constants, so we +% emulate \xetex behaviour by setting |\fontdimen10| and +% |\fontdimen11|. +% +% \begin{macrocode} +local function set_sscale_diments(fontdata) + local mc = fontdata.MathConstants + if mc then + if mc["ScriptPercentScaleDown"] then + fontdata.parameters[10] = mc.ScriptPercentScaleDown + else -- resort to plain TeX default + fontdata.parameters[10] = 70 + end + if mc["ScriptScriptPercentScaleDown"] then + fontdata.parameters[11] = mc.ScriptScriptPercentScaleDown + else -- resort to plain TeX default + fontdata.parameters[11] = 50 + end + end +end + +luatexbase.add_to_callback("luaotfload.patch_font", set_sscale_diments, "unicodemath.set_sscale_diments") +% \end{macrocode} % % \iffalse % -- cgit v1.2.3 From e45ca32f3cc648e0b6e6fdd3d45758b51e051eee Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Thu, 21 Apr 2011 07:12:52 +0200 Subject: Prepare for release --- NEWS | 6 ++++++ luaotfload.dtx | 12 ++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index ee579ed..42e6e14 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,12 @@ Change History -------------- +2011/04/21, luaotfload v1.25: + * Fix bug loading *.dfont fonts + * Misc. documentation fixes + * Fix the need to manually delete font cache when feature file is changed + * Hack to support Demi fonts + 2011/02/16, luaotfload v1.24: * Fix infinite loop first time creating a name list diff --git a/luaotfload.dtx b/luaotfload.dtx index 548251d..5bb9b6a 100644 --- a/luaotfload.dtx +++ b/luaotfload.dtx @@ -36,7 +36,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: luaotfload v1.24 OpenType layout system} +\Msg{* Package: luaotfload v1.25 OpenType layout system} \Msg{************************************************************************} \keepsilent @@ -104,7 +104,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{luaotfload.drv}% - [2011/02/16 v1.24 OpenType layout system]% + [2011/04/21 v1.25 OpenType layout system]% \documentclass{ltxdoc} \usepackage{metalogo,multicol,mdwlist,fancyvrb,xcolor,xspace} \usepackage[ @@ -166,7 +166,7 @@ and the derived files % \GetFileInfo{luaotfload.drv} % % \title{The \textsf{luaotfload} package} -% \date{2011/02/16 v1.24} +% \date{2011/04/21 v1.25} % \author{Elie Roux and Khaled Hosny\\ % Support: \email{lualatex-dev@tug.org}} % @@ -452,8 +452,8 @@ module("luaotfload", package.seeall) luaotfload.module = { name = "luaotfload", - version = 1.24, - date = "2011/02/16", + version = 1.25, + date = "2011/04/21", description = "OpenType layout system.", author = "Elie Roux & Hans Hagen", copyright = "Elie Roux", @@ -724,7 +724,7 @@ luatexbase.add_to_callback("luaotfload.patch_font", set_sscale_diments, "unicode \else \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{luaotfload}% - [2011/02/16 v1.24 OpenType layout system] + [2011/04/21 v1.25 OpenType layout system] \RequirePackage{luatexbase} \fi -- cgit v1.2.3 From 605fc04052dbdf49b55a07820e82de25e4b3494f Mon Sep 17 00:00:00 2001 From: Philipp Stephani Date: Thu, 28 Apr 2011 16:35:54 +0200 Subject: Support lualatex-platform module if available Use font list reported by operating system if possible, default font directory list otherwise --- otfl-font-nms.lua | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/otfl-font-nms.lua b/otfl-font-nms.lua index 2ad6898..86ceae8 100644 --- a/otfl-font-nms.lua +++ b/otfl-font-nms.lua @@ -19,9 +19,21 @@ names.path = { systemdir = file.join(kpse.expand_var("$TEXMFSYSVAR"), names_dir), } +local success = pcall(require, "luatexbase.modutils") +if success then + success = pcall(luatexbase.require_module, "lualatex-platform", "2011/03/30") +end +local get_installed_fonts +if success then + get_installed_fonts = lualatex.platform.get_installed_fonts +else + function get_installed_fonts() + end +end local splitpath, expandpath = file.split_path, kpse.expand_path local glob, basename = dir.glob, file.basename +local extname = file.extname local upper, lower, format = string.upper, string.lower, string.format local gsub, match, rpadd = string.gsub, string.match, string.rpadd local gmatch, sub, find = string.gmatch, string.sub, string.find @@ -444,6 +456,42 @@ local function read_blacklist() end local font_extensions = { "otf", "ttf", "ttc", "dfont" } +local font_extensions_set = {} +for key, value in ipairs(font_extensions) do + font_extensions_set[value] = true +end + +local installed_fonts_scanned = false + +local function scan_installed_fonts(fontnames, newfontnames) + -- Try to query and add font list from operating system. + -- This uses the lualatex-platform module. + logs.info("Scanning fonts known to operating system...") + local fonts = get_installed_fonts() + if fonts and #fonts > 0 then + installed_fonts_scanned = true + if trace_search then + logs.report("%d operating system fonts found", #fonts) + end + for key, value in ipairs(fonts) do + local file = value.path + if file then + local ext = extname(file) + if ext and font_extensions_set[ext] then + file = path_normalize(file) + if trace_loading then + logs.report("loading font: %s", file) + end + load_font(file, fontnames, newfontnames, false) + end + end + end + else + if trace_search then + logs.report("Could not retrieve list of installed fonts") + end + end +end local function scan_dir(dirname, fontnames, newfontnames, texmf) --[[ @@ -647,8 +695,10 @@ local function update_names(fontnames, force) end local newfontnames = fontnames_init() read_blacklist() + installed_font_scanned = false + scan_installed_fonts(fontnames, newfontnames) scan_texmf_fonts(fontnames, newfontnames) - if expandpath("$OSFONTDIR"):is_empty() then + if not installed_fonts_scanned and expandpath("$OSFONTDIR"):is_empty() then scan_os_fonts(fontnames, newfontnames) end return newfontnames -- cgit v1.2.3 From 25c1a595cd25fe657c3dce394024fedc800797b8 Mon Sep 17 00:00:00 2001 From: Philipp Stephani Date: Sun, 24 Jul 2011 20:41:27 +0200 Subject: Unify logging systems Until now, the logging functions in `otfl-luat-ovr.lua` and the function `log` in `otfl-font-nms.lua` used different syntax conventions, which resulted in suboptimal output when the functions in `otfl-font-nms.lua` were called from the LuaLaTeX module (in contrast to `mkluatexfontdb`). Spotted by Karl Berry, see http://tug.org/pipermail/lualatex-dev/2011-July/001274.html --- mkluatexfontdb.lua | 3 ++- otfl-font-nms.lua | 43 +++++++++++++++++++++++++------------------ 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/mkluatexfontdb.lua b/mkluatexfontdb.lua index 553332d..99d1552 100755 --- a/mkluatexfontdb.lua +++ b/mkluatexfontdb.lua @@ -89,8 +89,9 @@ end local function generate(force) local fontnames, saved fontnames = names.update(fontnames, force) - logs.report("%s fonts in the database", #fontnames.mappings) + logs.report("fonts in the database", "%i", #fontnames.mappings) saved = names.save(fontnames) + texio.write_nl("") end process_cmdline() diff --git a/otfl-font-nms.lua b/otfl-font-nms.lua index 86ceae8..a7edd4c 100644 --- a/otfl-font-nms.lua +++ b/otfl-font-nms.lua @@ -76,13 +76,14 @@ local function load_names() foundname = systempath end if data then - logs.info("Font names database loaded: " .. foundname) + logs.info("Font names database loaded", "%s", foundname) else logs.info([[Font names database not found, generating new one. This can take several minutes; please be patient.]]) data = names.update(fontnames_init()) names.save(data) end + texio.write_nl("") return data end @@ -251,9 +252,15 @@ end local lastislog = 0 -local function log(fmt, ...) +local function log(category, fmt, ...) lastislog = 1 - texio.write_nl(format("luaotfload | %s", format(fmt,...))) + if fmt then + texio.write_nl(format("luaotfload | %s: %s", category, format(fmt, ...))) + elseif category then + texio.write_nl(format("luaotfload | %s", category)) + else + texio.write_nl(format("luaotfload |")) + end io.flush() end @@ -266,7 +273,7 @@ local function font_fullinfo(filename, subfont, texmf) local f = fontloader.open(filename, subfont) if not f then if trace_loading then - logs.report("error: failed to open %s", filename) + logs.report("error", "failed to open %s", filename) end return end @@ -298,7 +305,7 @@ local function font_fullinfo(filename, subfont, texmf) else -- no names table, propably a broken font if trace_loading then - logs.report("broken font rejected: %s", basefile) + logs.report("broken font rejected", "%s", basefile) end return end @@ -328,7 +335,7 @@ local function load_font(filename, fontnames, newfontnames, texmf) if table.contains(names.blacklist, filename) or table.contains(names.blacklist, basename(filename)) then if trace_search then - logs.report("ignoring font '%s'", filename) + logs.report("ignoring font", "%s", filename) end return end @@ -353,7 +360,7 @@ local function load_font(filename, fontnames, newfontnames, texmf) newstatus[basefile].index[index+1] = #newmappings end if trace_loading then - logs.report("font already indexed: %s", basefile) + logs.report("font already indexed", "%s", basefile) end return end @@ -390,7 +397,7 @@ local function load_font(filename, fontnames, newfontnames, texmf) end else if trace_loading then - logs.report("failed to load %s", basefile) + logs.report("failed to load", "%s", basefile) end end end @@ -446,7 +453,7 @@ local function read_blacklist() line = line:split("%")[1] line = line:strip() if trace_search then - logs.report("blacklisted file: %s", line) + logs.report("blacklisted file", "%s", line) end blacklist[#blacklist+1] = line end @@ -471,7 +478,7 @@ local function scan_installed_fonts(fontnames, newfontnames) if fonts and #fonts > 0 then installed_fonts_scanned = true if trace_search then - logs.report("%d operating system fonts found", #fonts) + logs.report("operating system fonts found", "%d", #fonts) end for key, value in ipairs(fonts) do local file = value.path @@ -480,7 +487,7 @@ local function scan_installed_fonts(fontnames, newfontnames) if ext and font_extensions_set[ext] then file = path_normalize(file) if trace_loading then - logs.report("loading font: %s", file) + logs.report("loading font", "%s", file) end load_font(file, fontnames, newfontnames, false) end @@ -504,7 +511,7 @@ local function scan_dir(dirname, fontnames, newfontnames, texmf) local list, found = { }, { } local nbfound = 0 if trace_search then - logs.report("scanning '%s'", dirname) + logs.report("scanning", "%s", dirname) end for _,i in next, font_extensions do for _,ext in next, { i, upper(i) } do @@ -512,20 +519,20 @@ local function scan_dir(dirname, fontnames, newfontnames, texmf) -- note that glob fails silently on broken symlinks, which happens -- sometimes in TeX Live. if trace_search then - logs.report("%s '%s' fonts found", #found, ext) + logs.report("fonts found", "%s '%s' fonts found", #found, ext) end nbfound = nbfound + #found table.append(list, found) end end if trace_search then - logs.report("%d fonts found in '%s'", nbfound, dirname) + logs.report("fonts found", "%d fonts found in '%s'", nbfound, dirname) end for _,file in next, list do file = path_normalize(file) if trace_loading then - logs.report("loading font: %s", file) + logs.report("loading font", "%s", file) end load_font(file, fontnames, newfontnames, texmf) end @@ -677,7 +684,7 @@ local function update_names(fontnames, force) - fontnames is the final table to return - force is whether we rebuild it from scratch or not ]] - logs.info("Updating the font names database:") + logs.info("Updating the font names database") if force then fontnames = fontnames_init() @@ -712,10 +719,10 @@ local function save_names(fontnames) savepath = file.join(savepath, names.path.basename) if file.iswritable(savepath) then table.tofile(savepath, fontnames, true) - logs.info("Font names database saved: %s \n", savepath) + logs.info("Font names database saved", "%s", savepath) return savepath else - logs.info("Failed to save names database\n") + logs.info("Failed to save names database") return nil end end -- cgit v1.2.3 From 9580e67ebe04130a43dd1b1874e9c696c47624a9 Mon Sep 17 00:00:00 2001 From: Patrick Gundlach Date: Thu, 29 Sep 2011 22:18:26 +0200 Subject: Whitelist fonts Add a whitelist for fonts with "-" in front of the font name (to remove it from the blacklist) --- otfl-font-nms.lua | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/otfl-font-nms.lua b/otfl-font-nms.lua index a7edd4c..6e8b8be 100644 --- a/otfl-font-nms.lua +++ b/otfl-font-nms.lua @@ -332,8 +332,8 @@ local function load_font(filename, fontnames, newfontnames, texmf) local status = fontnames.status local basefile = texmf and basename(filename) or filename if filename then - if table.contains(names.blacklist, filename) or - table.contains(names.blacklist, basename(filename)) then + if names.blacklist[filename] or + names.blacklist[basename(filename)] then if trace_search then logs.report("ignoring font", "%s", filename) end @@ -442,6 +442,7 @@ local function read_blacklist() kpse.lookup("otfl-blacklist.cnf", {all=true, format="tex"}) } local blacklist = names.blacklist + local whitelist = { } if files and type(files) == "table" then for _,v in next, files do @@ -452,14 +453,21 @@ local function read_blacklist() else line = line:split("%")[1] line = line:strip() - if trace_search then - logs.report("blacklisted file", "%s", line) + if string.sub(line,1,1) == "-" then + whitelist[string.sub(line,2,-1)] = true + else + if trace_search then + logs.report("blacklisted file", "%s", line) + end + blacklist[line] = true end - blacklist[#blacklist+1] = line end end end end + for fontname,_ in pairs(whitelist) do + blacklist[fontname] = nil + end end local font_extensions = { "otf", "ttf", "ttc", "dfont" } -- cgit v1.2.3 From a527fb342e80adc63d6a192bd0a492b93aa25693 Mon Sep 17 00:00:00 2001 From: Patrick Gundlach Date: Fri, 30 Sep 2011 07:26:37 +0200 Subject: Black-/whitelist documentation update --- luaotfload.dtx | 13 ++++++++++++- otfl-blacklist.cnf | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/luaotfload.dtx b/luaotfload.dtx index 5bb9b6a..7e4d8ed 100644 --- a/luaotfload.dtx +++ b/luaotfload.dtx @@ -379,7 +379,18 @@ and the derived files % Simply, create a file named |otfl-blacklist.cnf| and added the to be % blacklisted files, one per line. Then put the file some where \textsf{kpse} % can find. You can either use the base name or the full path. Any thing after -% a |%| sign is ignored. +% a |%| sign is ignored. \textsf{luaotfload} reads all files named named +% |otfl-blacklist.cnf|, so you can add your own fonts to the global blacklist +% by creating a local file |otfl-blacklist.cnf| with the entries you need. +% You can also remove a font from this blacklist by prepending the name with +% a dash (|-|). +% +% \begin{verbatim} +% % example otf-blacklist.cnf +% /Library/Fonts/GillSans.ttc % luaotfload ignores this font +% -/Library/Fonts/Optima.ttc % it is usable again, even if it +% % is blacklisted somewhere else +% \end{verbatim} % % \section{Required \context files} % diff --git a/otfl-blacklist.cnf b/otfl-blacklist.cnf index f77de5b..6f9171b 100644 --- a/otfl-blacklist.cnf +++ b/otfl-blacklist.cnf @@ -1,4 +1,4 @@ -% Tackes ages to load +% Takes ages to load LastResort.ttf % a MacOSX font, but also available for free from unicode.org % Mac OS X TTC fonts, this list need to be filtered out -- cgit v1.2.3 From 694324a51ea7859008570313cca2cc6f6ef7e667 Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Sat, 1 Oct 2011 18:12:05 +0200 Subject: Comment out mac ttc fonts LuaTeX does not crash anymore. fixes #37 --- otfl-blacklist.cnf | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/otfl-blacklist.cnf b/otfl-blacklist.cnf index 6f9171b..771649b 100644 --- a/otfl-blacklist.cnf +++ b/otfl-blacklist.cnf @@ -2,21 +2,22 @@ LastResort.ttf % a MacOSX font, but also available for free from unicode.org % Mac OS X TTC fonts, this list need to be filtered out -/Library/Fonts/AmericanTypewriter.ttc -/Library/Fonts/Baskerville.ttc -/Library/Fonts/Chalkboard.ttc -/Library/Fonts/Cochin.ttc -/Library/Fonts/Copperplate.ttc -/Library/Fonts/Didot.ttc -/Library/Fonts/Futura.ttc -/Library/Fonts/GillSans.ttc -/Library/Fonts/Hoefler Text.ttc -/Library/Fonts/MarkerFelt.ttc -/Library/Fonts/Optima.ttc -/Library/Fonts/Papyrus.ttc -/Library/Fonts/STHeiti Medium.ttc -/System/Library/Fonts/AquaKana.ttc -/System/Library/Fonts/HelveticaNeue.ttc -/System/Library/Fonts/LucidaGrande.ttc -/System/Library/Fonts/Menlo.ttc -/System/Library/Fonts/STHeiti Light.ttc +% luatex bug fixed? +% /Library/Fonts/AmericanTypewriter.ttc +% /Library/Fonts/Baskerville.ttc +% /Library/Fonts/Chalkboard.ttc +% /Library/Fonts/Cochin.ttc +% /Library/Fonts/Copperplate.ttc +% /Library/Fonts/Didot.ttc +% /Library/Fonts/Futura.ttc +% /Library/Fonts/GillSans.ttc +% /Library/Fonts/Hoefler Text.ttc +% /Library/Fonts/MarkerFelt.ttc +% /Library/Fonts/Optima.ttc +% /Library/Fonts/Papyrus.ttc +% /Library/Fonts/STHeiti Medium.ttc +% /System/Library/Fonts/AquaKana.ttc +% /System/Library/Fonts/HelveticaNeue.ttc +% /System/Library/Fonts/LucidaGrande.ttc +% /System/Library/Fonts/Menlo.ttc +% /System/Library/Fonts/STHeiti Light.ttc -- cgit v1.2.3 From ba68760ae19267de980f4c1856c280f6db8a379b Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Sat, 1 Oct 2011 18:21:09 +0200 Subject: Revert "Temporarly add this code back, I want to make a release" This reverts commit acca6bfc8c0efcbb4e877dd97fcf945194f8ba8b. Code moved to unicode-math --- luaotfload.dtx | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/luaotfload.dtx b/luaotfload.dtx index 7e4d8ed..648a0b3 100644 --- a/luaotfload.dtx +++ b/luaotfload.dtx @@ -686,32 +686,6 @@ luatexbase.add_to_callback("find_vf_file", fonts.vf.find, "luaotfload.find_vf_file") % \end{macrocode} -% XXX: see https://github.com/wspr/unicode-math/issues/185 -% -% \luatex does not provide interface to accessing -% |(Script)ScriptPercentScaleDown| math constants, so we -% emulate \xetex behaviour by setting |\fontdimen10| and -% |\fontdimen11|. -% -% \begin{macrocode} -local function set_sscale_diments(fontdata) - local mc = fontdata.MathConstants - if mc then - if mc["ScriptPercentScaleDown"] then - fontdata.parameters[10] = mc.ScriptPercentScaleDown - else -- resort to plain TeX default - fontdata.parameters[10] = 70 - end - if mc["ScriptScriptPercentScaleDown"] then - fontdata.parameters[11] = mc.ScriptScriptPercentScaleDown - else -- resort to plain TeX default - fontdata.parameters[11] = 50 - end - end -end - -luatexbase.add_to_callback("luaotfload.patch_font", set_sscale_diments, "unicodemath.set_sscale_diments") -% \end{macrocode} % % \iffalse % -- cgit v1.2.3