summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-04-21 20:55:25 +0000
committerKarl Berry <karl@freefriends.org>2016-04-21 20:55:25 +0000
commitcde7add49b05077ff24b6006f031bbdd70c91d7d (patch)
tree5beec57ac5092f86eb2db3ce46db12dc5f0c3a25 /Master/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua
parent2697dc3d2c099b15f96861286d6863d5a15bda10 (diff)
luaotfload (21apr16)
git-svn-id: svn://tug.org/texlive/trunk@40655 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua')
-rw-r--r--Master/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua158
1 files changed, 23 insertions, 135 deletions
diff --git a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua
index 8292ddd33e4..3d300e7e79c 100644
--- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua
+++ b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua
@@ -2,7 +2,7 @@
-----------------------------------------------------------------------
-- FILE: luaotfload-auxiliary.lua
-- DESCRIPTION: part of luaotfload
--- REQUIREMENTS: luaotfload 2.6
+-- REQUIREMENTS: luaotfload 2.7
-- AUTHOR: Khaled Hosny, Élie Roux, Philipp Gesang
-----------------------------------------------------------------------
--
@@ -42,7 +42,15 @@ local luaotfload_callbacks = { }
--- https://github.com/khaledhosny/luaotfload/issues/54
local rewrite_fontname = function (tfmdata, specification)
- tfmdata.name = [["]] .. specification .. [["]]
+ local format = tfmdata.format or tfmdata.properties.format
+ if format ~= "type1" then
+ if stringfind (specification, " ") then
+ tfmdata.name = stringformat ("%q", specification)
+ else
+ --- other specs should parse just fine
+ tfmdata.name = specification
+ end
+ end
end
local rewriting = false
@@ -173,25 +181,30 @@ local set_capheight = function (fontdata)
local shared = fontdata.shared
local parameters = fontdata.parameters
local capheight
- if shared and shared.rawdata.metadata.pfminfo then
+ if shared
+ and shared.rawdata.metadata
+ and shared.rawdata.metadata.pfminfo
+ then
local units_per_em = parameters.units
local size = parameters.size
local os2_capheight = shared.rawdata.metadata.pfminfo.os2_capheight
- if os2_capheight > 0 then
+ if capheight and os2_capheight > 0 then
capheight = os2_capheight / units_per_em * size
else
- local X8 = stringbyte"X"
- if fontdata.characters[X8] then
- capheight = fontdata.characters[X8].height
+ local X8_str = stringbyte"X"
+ local X8_chr = fontdata.characters[X8_str]
+ if X8_chr then
+ capheight = X8_chr.height
else
capheight = parameters.ascender / units_per_em * size
end
end
else
- local X8 = stringbyte"X"
- if fontdata.characters[X8] then
- capheight = fontdata.characters[X8].height
+ local X8_str = stringbyte "X"
+ local X8_chr = fontdata.characters[X8_str]
+ if X8_chr then
+ capheight = X8_chr.height
end
end
if capheight then
@@ -298,131 +311,6 @@ end
aux.name_of_slot = name_of_slot
---[[doc--
-
- In Context, characters.data is where the data from char-def.lua
- resides. The file is huge (>3.7 MB as of 2013) and not part of the
- isolated font loader. Nevertheless, we include a partial version
- generated by the mkcharacters script that contains only the
- a subset of the fields of each character defined.
-
- Currently, these are (compare the mkcharacters script!)
-
- · "direction"
- · "mirror"
- · "category"
- · "textclass"
-
- The directional information is required for packages like Simurgh [0]
- to work correctly. In an early stage [1] it was necessary to load
- further files from Context directly, including the full blown version
- of char-def. Since we have no use for most of the so imported
- functionality, the required parts have been isolated and are now
- instated along with luaotfload-characters.lua. We can extend the set
- of imported features easily should it not be enough.
-
- [0] https://github.com/persian-tex/simurgh
- [1] http://tex.stackexchange.com/a/132301/14066
-
---doc]]--
-
-characters = characters or { } --- should be created in basics-gen
-characters.data = nil
-local chardef = "luaotfload-characters"
-
-do
- local setmetatableindex = function (t, f)
- local mt = getmetatable (t)
- if mt then
- mt.__index = f
- else
- setmetatable (t, { __index = f })
- end
- end
-
- --- there are some special tables for each field that provide access
- --- to fields of the character table by means of a metatable
-
- local mkcharspecial = function (characters, tablename, field)
-
- local chardata = characters.data
-
- if chardata then
- local newspecial = { }
- characters [tablename] = newspecial --> e.g. “characters.data.mirrors”
-
- local idx = function (t, char)
- local c = chardata [char]
- if c then
- local m = c [field] --> e.g. “mirror”
- if m then
- t [char] = m
- return m
- end
- end
- newspecial [char] = false
- return char
- end
-
- setmetatableindex (newspecial, idx)
- end
-
- end
-
- local mkcategories = function (characters) -- different from the others
-
- local chardata = characters.data
-
- setmetatable (characters, { __index = function (t, char)
- if char then
- local c = chardata [char]
- c = c.category or char
- t [char] = c
- return c
- end
- end})
-
- end
-
- local load_failed = false
- local chardata --> characters.data; loaded on demand
-
- local load_chardef = function ()
-
- logreport ("both", 1, "aux", "Loading character metadata from %s.", chardef)
- chardata = dofile (kpse.find_file (chardef, "lua"))
-
- if chardata == nil then
- warning ("Could not load %s; continuing \z
- with empty character table.",
- chardef)
- chardata = { }
- load_failed = true
- end
-
- characters = { } --- nuke metatable
- characters.data = chardata
-
- --- institute some of the functionality from char-ini.lua
-
- mkcharspecial (characters, "mirrors", "mirror")
- mkcharspecial (characters, "directions", "direction")
- mkcharspecial (characters, "textclasses", "textclass")
- mkcategories (characters)
-
- end
-
- local charindex = function (t, k)
- if chardata == nil and load_failed ~= true then
- load_chardef ()
- end
-
- return characters [k]
- end
-
- setmetatableindex (characters, charindex)
-
-end
-----------------------------------------------------------------------
--- features / scripts / languages