summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS8
-rw-r--r--luaotfload-auxiliary.lua12
-rw-r--r--luaotfload-colors.lua6
-rw-r--r--luaotfload-database.lua2
-rw-r--r--luaotfload-features.lua149
-rw-r--r--luaotfload-loaders.lua8
-rw-r--r--luaotfload-override.lua6
-rwxr-xr-xluaotfload-tool.lua13
8 files changed, 45 insertions, 159 deletions
diff --git a/NEWS b/NEWS
index 3858d8f..2cdf365 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,8 @@ Change History
--------------
2013/04/xx, luaotfload v2.2:
+ * There is now a central, non-personal dev repo on github:
+ https://github.com/lualatex/luaotfload
* Synchronisation with ConTeXt from TeXLive 2013, inducing
backward-incompatible changes in the font structure (fontspec and
unicode-math must be updated)
@@ -10,7 +12,7 @@ Change History
the LuaTeX-Plain format)
* Improved and extended documentation
* Font filenames are stored in the database (file: lookups more efficient)
- * Optional caching of name: lookups
+ * Optional caching of name: lookups (uses separate cache file)
* Increased fidelity of XeTeX emulation
* Renaming mkluatexfontdb into luaotfload-tool (the old behavior is kept if
the script is symlinked/ renamed mkluatexfontdb)
@@ -21,8 +23,8 @@ Change History
* The Adobe Glyph List (font-age.lua) is now built via script (mkglyphlist)
* Hans adapted the font loader to several of our requests (attribute
allocation, custom merged package name etc.)
- * There is now a central, non-personal dev repo on github:
- https://github.com/lualatex/luaotfload
+ * Auxiliary functions for package authors
+ * Fallbacks for older versions of dependent packages
2013/04/27, luaotfload v1.3:
* blacklisting lingoes.ttf (segfaults)
diff --git a/luaotfload-auxiliary.lua b/luaotfload-auxiliary.lua
index bf567e3..5de964d 100644
--- a/luaotfload-auxiliary.lua
+++ b/luaotfload-auxiliary.lua
@@ -4,7 +4,7 @@
-- DESCRIPTION: part of luaotfload
-- REQUIREMENTS: luaotfload 2.2
-- AUTHOR: Khaled Hosny, Élie Roux, Philipp Gesang
--- VERSION: 1.0
+-- VERSION: 2.2
-- CREATED: 2013-05-01 14:40:50+0200
-----------------------------------------------------------------------
--
@@ -354,16 +354,6 @@ end
aux.provides_language = provides_language
---- fontspec apparently has the arguments shuffled
---- theirs: id -> lang -> script -> bool
---- ours: id -> script -> lang -> bool
---- whereas in the other check_* functions, script is
---- always the second argument ...
-aux.provides_language_fontspec = function
- (font_id, asked_language, asked_script)
- return provides_language(font_id, asked_script, asked_language)
-end
-
--[[doc--
We strip the syntax elements from feature definitions (shouldn’t
actually be there in the first place, but who cares ...)
diff --git a/luaotfload-colors.lua b/luaotfload-colors.lua
index 3d8bfab..1525214 100644
--- a/luaotfload-colors.lua
+++ b/luaotfload-colors.lua
@@ -1,9 +1,9 @@
if not modules then modules = { } end modules ['luaotfload-colors'] = {
- version = 1.001,
+ version = 2.200,
comment = "companion to luaotfload.lua (font color)",
- author = "Khaled Hosny and Elie Roux",
+ author = "Khaled Hosny, Elie Roux, Philipp Gesang",
copyright = "Luaotfload Development Team",
- license = "GPL"
+ license = "GNU GPL v2"
}
local newnode = node.new
diff --git a/luaotfload-database.lua b/luaotfload-database.lua
index 6f95208..8faeba2 100644
--- a/luaotfload-database.lua
+++ b/luaotfload-database.lua
@@ -1,7 +1,7 @@
if not modules then modules = { } end modules ['luaotfload-database'] = {
version = 2.2,
comment = "companion to luaotfload.lua",
- author = "Khaled Hosny and Elie Roux",
+ author = "Khaled Hosny, Elie Roux, Philipp Gesang",
copyright = "Luaotfload Development Team",
license = "GNU GPL v2"
}
diff --git a/luaotfload-features.lua b/luaotfload-features.lua
index cd00a0f..0665804 100644
--- a/luaotfload-features.lua
+++ b/luaotfload-features.lua
@@ -1,7 +1,7 @@
if not modules then modules = { } end modules ["features"] = {
- version = 1.000,
+ version = 2.200,
comment = "companion to luaotfload.lua",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ author = "Hans Hagen, Khaled Hosny, Elie Roux, Philipp Gesang",
copyright = "PRAGMA ADE / ConTeXt Development Team",
license = "see context related readme files"
}
@@ -19,8 +19,10 @@ local fonts = fonts
fonts.constructors.namemode = "specification" -- somehow latex needs this (changed name!) => will change into an overload
--- tricky: we sort of bypass the parser and directly feed all into
--- the sub parser
+--[[HH--
+ tricky: we sort of bypass the parser and directly feed all into
+ the sub parser
+--HH]]--
function fonts.definers.getspecification(str)
return "", str, "", ":", str
@@ -31,53 +33,14 @@ local old_feature_list = { }
local report = logs.names_report
local stringlower = string.lower
-local stringsub = string.sub
local stringgsub = string.gsub
-local stringfind = string.find
-local stringexplode = string.explode
local stringis_empty = string.is_empty
---[[doc--
-Apparently, these “modifiers” are another measure of emulating \XETEX,
-cf. “About \XETEX”, by Jonathan Kew, 2005; and
- “The \XETEX Reference Guide”, by Will Robertson, 2011.
---doc]]--
-
-local supported = {
- b = "bold",
- i = "italic",
- bi = "bolditalic",
- aat = false,
- icu = false,
- gr = false,
-}
-
--- this parses the optional flags after the slash
--- the original behavior is that multiple slashes
--- are valid but they might cancel prior settings
--- example: {name:Antykwa Torunska/I/B} -> bold
-local isstyle = function (request)
- request = stringlower(request)
- request = stringexplode(request, "/")
-
- for _,v in next, request do
- local stylename = supported[v]
- if stylename then
- old_feature_list.style = stylename
- elseif stringfind(v, "^s=") then
- --- after all, we want everything after the second byte ...
- local val = stringsub(v, 3)
- old_feature_list.optsize = val
- elseif stylename == false then
- report("log", 0,
- "load", "unsupported font option: %s", v)
- elseif not stringis_empty(v) then
- old_feature_list.style = stringgsub(v, "[^%a%d]", "")
- end
- end
-end
-
--- TODO an option to dump the default features for a script would make
--- a nice addition to luaotfload-tool
@@ -169,84 +132,6 @@ local set_default_features = function (speclist)
return speclist
end
--- --[==[obsolete--
-local function issome () old_feature_list.lookup = 'name' end
-local function isfile () old_feature_list.lookup = 'file' end
-local function isname () old_feature_list.lookup = 'name' end
-local function thename(s) old_feature_list.name = s end
-local function issub (v) old_feature_list.sub = v end
-local function istrue (s) old_feature_list[s] = true end
-local function isfalse(s) old_feature_list[s] = false end
-local function iskey (k,v) old_feature_list[k] = v end
-
-local P, S, R, C = lpeg.P, lpeg.S, lpeg.R, lpeg.C
-
-local spaces = P(" ")^0
---local namespec = (1-S("/:("))^0 -- was: (1-S("/: ("))^0
---[[phg-- this prevents matching of absolute paths as file names --]]--
-local namespec = (1-S("/:("))^1
-local filespec = (R("az", "AZ") * P(":"))^-1 * (1-S(":("))^1
-local stylespec = spaces * P("/") * (((1-P(":"))^0)/isstyle) * spaces
-local filename = (P("file:")/isfile * (filespec/thename))
- + (P("[") * P(true)/isname * (((1-P("]"))^0)/thename) * P("]"))
-local fontname = (P("name:")/isname * (namespec/thename)) + P(true)/issome * (namespec/thename)
-local sometext = (R("az","AZ","09") + S("+-.,"))^1
-local truevalue = P("+") * spaces * (sometext/istrue)
-local falsevalue = P("-") * spaces * (sometext/isfalse)
-local keyvalue = P("+") + (C(sometext) * spaces * P("=") * spaces * C(sometext))/iskey
-local somevalue = sometext/istrue
-local subvalue = P("(") * (C(P(1-S("()"))^1)/issub) * P(")") -- for Kim
-local option = spaces * (keyvalue + falsevalue + truevalue + somevalue) * spaces
-local options = P(":") * spaces * (P(";")^0 * option)^0
-local oldsyntax = (filename + fontname) * subvalue^0 * stylespec^0 * options^0
-
---- to be annihilated
-local function old_behavior (specification) -- xetex mode
- old_feature_list = { }
- lpeg.match(oldsyntax,specification.specification)
- old_feature_list = set_default_features(old_feature_list)
- if old_feature_list.style then
- specification.style = old_feature_list.style
- old_feature_list.style = nil
- end
- if old_feature_list.optsize then
- specification.optsize = old_feature_list.optsize
- old_feature_list.optsize = nil
- end
- if old_feature_list.name then
- if resolvers.findfile(old_feature_list.name, "tfm") then
- old_feature_list.lookup = "file"
- old_feature_list.name = file.addsuffix(old_feature_list.name, "tfm")
- elseif resolvers.findfile(old_feature_list.name, "ofm") then
- old_feature_list.lookup = "file"
- old_feature_list.name = file.addsuffix(old_feature_list.name, "ofm")
- end
-
- specification.name = old_feature_list.name
- old_feature_list.name = nil
- end
- --- this test overwrites valid file: requests for xetex bracket
- --- syntax
- if old_feature_list.lookup then
- specification.lookup = old_feature_list.lookup
- old_feature_list.lookup = nil
- end
- if old_feature_list.sub then
- specification.sub = old_feature_list.sub
- old_feature_list.sub = nil
- end
- if not old_feature_list.mode then
- -- if no mode is set, use our default
- old_feature_list.mode = fonts.mode
- end
- specification.features.normal = fonts.handlers.otf.features.normalize(old_feature_list)
- return specification
-end
-
---fonts.definers.registersplit(":",old_behavior,"cryptic")
---fonts.definers.registersplit("", old_behavior,"more cryptic") -- catches \font\text=[names]
---obsolete]==]--
-
-----------------------------------------------------------------------
--- request syntax parser 2.2
-----------------------------------------------------------------------
@@ -311,8 +196,6 @@ end
-----------------------------------------------------------------------
-local stringlower = string.lower
-
local toboolean = function (s)
if s == "true" then return true end
if s == "false" then return false end
@@ -352,13 +235,15 @@ local decimal = digit^1 * (dot * digit^0)^-1
--doc]]--
local style_modifier = (P"BI" + P"IB" + P"bi" + P"ib" + S"biBI")
/ stringlower
-local other_modifier = P"S=" * decimal --- optical size; unsupported
- + P"AAT" + P"aat" --- apple stuff; unsupported
+local size_modifier = S"Ss" * P"=" --- optical size
+ * Cc"optsize" * C(decimal)
+local other_modifier = P"AAT" + P"aat" --- apple stuff; unsupported
+ P"ICU" + P"icu" --- not applicable
+ P"GR" + P"gr" --- sil stuff; unsupported
local garbage_modifier = ((1 - colon - slash)^0 * Cc(false))
local modifier = slash * (other_modifier --> ignore
+ Cs(style_modifier) --> collect
+ + Ct(size_modifier) --> collect
+ garbage_modifier) --> warn
local modifier_list = Cg(Ct(modifier^0), "modifiers")
@@ -445,12 +330,10 @@ local handle_slashed = function (modifiers)
local style, optsize
for i=1, #modifiers do
local mod = modifiers[i]
- if supported[mod] then
+ if type(mod) == "table" and mod[1] == "optsize" then --> optical size
+ optsize = tonumber(mod[2])
+ elseif supported[mod] then
style = supported[mod]
- --elseif stringfind(v, "^s=") then
- elseif stringsub(v, 1, 2) == "s=" then
- local val = stringsub(v, 3)
- optsize = val
elseif stylename == false then
report("log", 0,
"load", "unsupported font option: %s", v)
@@ -513,15 +396,9 @@ local compare_requests = function (spec)
return new
end
---fonts.definers.registersplit(":", compare_requests, "cryptic")
---fonts.definers.registersplit("", compare_requests, "more cryptic") -- catches \font\text=[names]
-
fonts.definers.registersplit(":", handle_request, "cryptic")
fonts.definers.registersplit("", handle_request, "more cryptic") -- catches \font\text=[names]
---fonts.definers.registersplit(":",old_behavior,"cryptic")
---fonts.definers.registersplit("", old_behavior,"more cryptic") -- catches \font\text=[names]
-
---[[ end included font-ltx.lua ]]
--[[doc--
diff --git a/luaotfload-loaders.lua b/luaotfload-loaders.lua
index 8ab6b29..c9c30de 100644
--- a/luaotfload-loaders.lua
+++ b/luaotfload-loaders.lua
@@ -1,3 +1,11 @@
+if not modules then modules = { } end modules ["loaders"] = {
+ version = 2.200,
+ comment = "companion to luaotfload.lua",
+ author = "Hans Hagen, Khaled Hosny, Elie Roux, Philipp Gesang",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
local fonts = fonts
---
diff --git a/luaotfload-override.lua b/luaotfload-override.lua
index 2b9ef8b..d796b0e 100644
--- a/luaotfload-override.lua
+++ b/luaotfload-override.lua
@@ -1,12 +1,11 @@
if not modules then modules = { } end modules ['luat-ovr'] = {
- version = 1.001,
+ version = 2.2,
comment = "companion to luatex-*.tex",
- author = "Khaled Hosny and Elie Roux",
+ author = "Khaled Hosny, Elie Roux, Philipp Gesang",
copyright = "Luaotfload Development Team",
license = "GNU GPL v2"
}
-
local module_name = "luaotfload"
local texiowrite_nl = texio.write_nl
@@ -27,6 +26,7 @@ We recreate the verbosity levels previously implemented in font-nms:
==========================================================
--doc]]--
+
local loglevel = 1 --- default
local logout = "log"
diff --git a/luaotfload-tool.lua b/luaotfload-tool.lua
index 0833842..827ece9 100755
--- a/luaotfload-tool.lua
+++ b/luaotfload-tool.lua
@@ -1,8 +1,17 @@
#!/usr/bin/env texlua
+-----------------------------------------------------------------------
+-- FILE: luaotfload-tool.lua
+-- DESCRIPTION: database functionality
+-- REQUIREMENTS: luaotfload 2.2
+-- AUTHOR: Khaled Hosny, Élie Roux, Philipp Gesang
+-- VERSION: 2.2
+-- CREATED: 2013-05-01 14:40:50+0200
+-----------------------------------------------------------------------
--[[doc--
-This file was originally written by Elie Roux and Khaled Hosny and is under CC0
-license (see http://creativecommons.org/publicdomain/zero/1.0/legalcode).
+This file was originally written (as \fileent{mkluatexfontdb.lua}) by
+Elie Roux and Khaled Hosny and is under CC0 license (see
+http://creativecommons.org/publicdomain/zero/1.0/legalcode).
This file is a wrapper for the luaotfload font names module
(luaotfload-database.lua). It is part of the luaotfload bundle, please