summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Gesang <phg@phi-gamma.net>2016-04-15 08:16:06 +0200
committerPhilipp Gesang <phg@phi-gamma.net>2016-04-15 23:06:16 +0200
commit4d4467ae3a0df377eac66346c25de5b35ceb53e3 (patch)
treec56a065d1d21d32417c375e56fafcea58c496dbf
parent9bc4f17b9bf0dcf3a3865ae2eb433818a5c70573 (diff)
downloadluaotfload-4d4467ae3a0df377eac66346c25de5b35ceb53e3.tar.gz
[fontloader] sync with Context as of 2016-04-15
-rw-r--r--src/fontloader/misc/fontloader-font-otr.lua43
-rw-r--r--src/fontloader/misc/fontloader-util-str.lua2
-rw-r--r--src/fontloader/runtime/fontloader-reference.lua29
3 files changed, 46 insertions, 28 deletions
diff --git a/src/fontloader/misc/fontloader-font-otr.lua b/src/fontloader/misc/fontloader-font-otr.lua
index 0ad1e19..c5f3d56 100644
--- a/src/fontloader/misc/fontloader-font-otr.lua
+++ b/src/fontloader/misc/fontloader-font-otr.lua
@@ -1798,15 +1798,15 @@ otf.unpackoutlines = unpackoutlines
-- some properties in order to read following tables. When details is true we also
-- initialize the glyphs data.
-local function getinfo(maindata,sub,platformnames)
+local function getinfo(maindata,sub,platformnames,rawfamilynames)
local fontdata = sub and maindata.subfonts and maindata.subfonts[sub] or maindata
local names = fontdata.names
local info = nil
if names then
local metrics = fontdata.windowsmetrics or { }
- local postscript = fontdata.postscript or { }
- local fontheader = fontdata.fontheader or { }
- local cffinfo = fontdata.cffinfo or { }
+ local postscript = fontdata.postscript or { }
+ local fontheader = fontdata.fontheader or { }
+ local cffinfo = fontdata.cffinfo or { }
local filename = fontdata.filename
local weight = getname(fontdata,"weight") or cffinfo.weight or metrics.weight
local width = getname(fontdata,"width") or cffinfo.width or metrics.width
@@ -1814,9 +1814,15 @@ local function getinfo(maindata,sub,platformnames)
local fullname = getname(fontdata,"fullname")
local family = getname(fontdata,"family")
local subfamily = getname(fontdata,"subfamily")
- local familyname = getname(fontdata,"typographicfamily") or family
- local subfamilyname = getname(fontdata,"typographicsubfamily") or subfamily
- local compatiblename = getname(fontdata,"compatiblefullname")
+ local familyname = getname(fontdata,"typographicfamily")
+ local subfamilyname = getname(fontdata,"typographicsubfamily")
+ local compatiblename = getname(fontdata,"compatiblefullname") -- kind of useless
+ if rawfamilynames then
+ -- for PG (for now, as i need to check / adapt context to catch a no-fallback case)
+ else
+ if not familyname then familyname = family end
+ if not subfamilyname then subfamilyname = subfamily end
+ end
info = { -- we inherit some inconsistencies/choices from ff
subfontindex = fontdata.subfontindex or sub or 0,
-- filename = filename,
@@ -2139,31 +2145,34 @@ end
function readers.getinfo(filename,specification) -- string, nil|number|table
-- platformnames is optional and not used by context (a too unpredictable mess
-- that only add to the confusion) .. so it's only for checking things
- local subfont = nil
- local platformname = false
+ local subfont = nil
+ local platformname = false
+ local rawfamilynames = false
if type(specification) == "table" then
- subfont = tonumber(specification.subfont)
- platformnames = specification.platformnames
+ subfont = tonumber(specification.subfont)
+ platformnames = specification.platformnames
+ rawfamilynames = specification.rawfamilynames
else
subfont = tonumber(specification)
end
local fontdata = loadfont {
- filename = filename,
- details = true,
- platformnames = platformnames,
+ filename = filename,
+ details = true,
+ platformnames = platformnames,
+ -- rawfamilynames = rawfamilynames,
}
if fontdata then
local subfonts = fontdata.subfonts
if not subfonts then
- return getinfo(fontdata,nil,platformnames)
+ return getinfo(fontdata,nil,platformnames,rawfamilynames)
elseif not subfont then
local info = { }
for i=1,#subfonts do
- info[i] = getinfo(fontdata,i,platformnames)
+ info[i] = getinfo(fontdata,i,platformnames,rawfamilynames)
end
return info
elseif subfont > 1 and subfont <= #subfonts then
- return getinfo(fontdata,subfont,platformnames)
+ return getinfo(fontdata,subfont,platformnames,rawfamilynames)
else
return {
filename = filename,
diff --git a/src/fontloader/misc/fontloader-util-str.lua b/src/fontloader/misc/fontloader-util-str.lua
index 95534c8..28b75db 100644
--- a/src/fontloader/misc/fontloader-util-str.lua
+++ b/src/fontloader/misc/fontloader-util-str.lua
@@ -822,6 +822,8 @@ end
-- aA b cC d eE f gG hH iI jJ lL mM N o p qQ r sS tT uU wW xX z
+-- extensions : %!tag!
+
local builder = Cs { "start",
start = (
(
diff --git a/src/fontloader/runtime/fontloader-reference.lua b/src/fontloader/runtime/fontloader-reference.lua
index a4677ef..b76b15c 100644
--- a/src/fontloader/runtime/fontloader-reference.lua
+++ b/src/fontloader/runtime/fontloader-reference.lua
@@ -1,6 +1,6 @@
-- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua
-- parent file : c:/data/develop/context/sources/luatex-fonts.lua
--- merge date : 04/11/16 19:04:35
+-- merge date : 04/13/16 16:46:44
do -- begin closure to overcome local limits and interference
@@ -9292,15 +9292,15 @@ local function unpackoutlines(data)
end
otf.packoutlines=packoutlines
otf.unpackoutlines=unpackoutlines
-local function getinfo(maindata,sub,platformnames)
+local function getinfo(maindata,sub,platformnames,rawfamilynames)
local fontdata=sub and maindata.subfonts and maindata.subfonts[sub] or maindata
local names=fontdata.names
local info=nil
if names then
local metrics=fontdata.windowsmetrics or {}
- local postscript=fontdata.postscript or {}
- local fontheader=fontdata.fontheader or {}
- local cffinfo=fontdata.cffinfo or {}
+ local postscript=fontdata.postscript or {}
+ local fontheader=fontdata.fontheader or {}
+ local cffinfo=fontdata.cffinfo or {}
local filename=fontdata.filename
local weight=getname(fontdata,"weight") or cffinfo.weight or metrics.weight
local width=getname(fontdata,"width") or cffinfo.width or metrics.width
@@ -9308,9 +9308,14 @@ local function getinfo(maindata,sub,platformnames)
local fullname=getname(fontdata,"fullname")
local family=getname(fontdata,"family")
local subfamily=getname(fontdata,"subfamily")
- local familyname=getname(fontdata,"typographicfamily") or family
- local subfamilyname=getname(fontdata,"typographicsubfamily") or subfamily
- local compatiblename=getname(fontdata,"compatiblefullname")
+ local familyname=getname(fontdata,"typographicfamily")
+ local subfamilyname=getname(fontdata,"typographicsubfamily")
+ local compatiblename=getname(fontdata,"compatiblefullname")
+ if rawfamilynames then
+ else
+ if not familyname then familyname=family end
+ if not subfamilyname then subfamilyname=subfamily end
+ end
info={
subfontindex=fontdata.subfontindex or sub or 0,
version=getname(fontdata,"version"),
@@ -9606,9 +9611,11 @@ end
function readers.getinfo(filename,specification)
local subfont=nil
local platformname=false
+ local rawfamilynames=false
if type(specification)=="table" then
subfont=tonumber(specification.subfont)
platformnames=specification.platformnames
+ rawfamilynames=specification.rawfamilynames
else
subfont=tonumber(specification)
end
@@ -9620,15 +9627,15 @@ function readers.getinfo(filename,specification)
if fontdata then
local subfonts=fontdata.subfonts
if not subfonts then
- return getinfo(fontdata,nil,platformnames)
+ return getinfo(fontdata,nil,platformnames,rawfamilynames)
elseif not subfont then
local info={}
for i=1,#subfonts do
- info[i]=getinfo(fontdata,i,platformnames)
+ info[i]=getinfo(fontdata,i,platformnames,rawfamilynames)
end
return info
elseif subfont>1 and subfont<=#subfonts then
- return getinfo(fontdata,subfont,platformnames)
+ return getinfo(fontdata,subfont,platformnames,rawfamilynames)
else
return {
filename=filename,