diff options
-rw-r--r-- | otfl-font-con.lua | 25 | ||||
-rw-r--r-- | otfl-font-def.lua | 17 | ||||
-rw-r--r-- | otfl-font-otf.lua | 4 | ||||
-rw-r--r-- | otfl-font-otn.lua | 6 |
4 files changed, 32 insertions, 20 deletions
diff --git a/otfl-font-con.lua b/otfl-font-con.lua index f6b415b..18123ed 100644 --- a/otfl-font-con.lua +++ b/otfl-font-con.lua @@ -146,7 +146,13 @@ function constructors.calculatescale(tfmdata,scaledpoints) return scaledpoints, scaledpoints / (parameters.units or 1000) -- delta end -function constructors.assignmathparameters(target,original) -- dumb version, not used in context +local unscaled = { + ScriptPercentScaleDown = true, + ScriptScriptPercentScaleDown = true, + RadicalDegreeBottomRaisePercent = true +} + +function constructors.assignmathparameters(target,original) -- simple variant, not used in context -- when a tfm file is loaded, it has already been scaled -- and it never enters the scaled so this is otf only and -- even then we do some extra in the context math plugins @@ -157,18 +163,18 @@ function constructors.assignmathparameters(target,original) -- dumb version, not local targetmathparameters = { } local factor = targetproperties.math_is_scaled and 1 or targetparameters.factor for name, value in next, mathparameters do - if name == "RadicalDegreeBottomRaisePercent" then + if unscaled[name] then targetmathparameters[name] = value else targetmathparameters[name] = value * factor end end - -- if not targetmathparameters.FractionDelimiterSize then - -- targetmathparameters.FractionDelimiterSize = 0 - -- end - -- if not mathparameters.FractionDelimiterDisplayStyleSize then - -- targetmathparameters.FractionDelimiterDisplayStyleSize = 0 - -- end + if not targetmathparameters.FractionDelimiterSize then + targetmathparameters.FractionDelimiterSize = 1.01 * targetparameters.size + end + if not mathparameters.FractionDelimiterDisplayStyleSize then + targetmathparameters.FractionDelimiterDisplayStyleSize = 2.40 * targetparameters.size + end target.mathparameters = targetmathparameters end end @@ -1122,6 +1128,9 @@ function constructors.collectprocessors(what,tfmdata,features,trace,report) end end end + else + report("no feature processors for mode %s for font %s", + mode or 'unknown', tfmdata.properties.fullname or 'unknown') end end return processes diff --git a/otfl-font-def.lua b/otfl-font-def.lua index aaa6ef4..63d3e2c 100644 --- a/otfl-font-def.lua +++ b/otfl-font-def.lua @@ -170,13 +170,14 @@ end function resolvers.name(specification) local resolve = fonts.names.resolve if resolve then - local resolved, sub = fonts.names.resolve(specification.name,specification.sub,specification) - specification.resolved, specification.sub = resolved, sub + local resolved, sub = resolve(specification.name,specification.sub,specification) -- we pass specification for overloaded versions if resolved then + specification.resolved = resolved + specification.sub = sub local suffix = file.suffix(resolved) if fonts.formats[suffix] then specification.forced = suffix - specification.name = file.removesuffix(resolved) + specification.name = file.removesuffix(resolved) else specification.name = resolved end @@ -189,10 +190,12 @@ end function resolvers.spec(specification) local resolvespec = fonts.names.resolvespec if resolvespec then - specification.resolved, specification.sub = fonts.names.resolvespec(specification.name,specification.sub,specification) - if specification.resolved then - specification.forced = file.extname(specification.resolved) - specification.name = file.removesuffix(specification.resolved) + local resolved, sub = resolvespec(specification.name,specification.sub,specification) -- we pass specification for overloaded versions + if resolved then + specification.resolved = resolved + specification.sub = sub + specification.forced = file.extname(resolved) + specification.name = file.removesuffix(resolved) end else resolvers.name(specification) diff --git a/otfl-font-otf.lua b/otfl-font-otf.lua index 83b961e..6a75a0c 100644 --- a/otfl-font-otf.lua +++ b/otfl-font-otf.lua @@ -345,8 +345,8 @@ function otf.load(filename,format,sub,featurefile) local attr = lfs.attributes(name) featurefiles[#featurefiles+1] = { name = name, - size = size, - time = time, + size = attr and attr.size or 0, + time = attr and attr.modification or 0, } end end diff --git a/otfl-font-otn.lua b/otfl-font-otn.lua index a972d50..ebdeb75 100644 --- a/otfl-font-otn.lua +++ b/otfl-font-otn.lua @@ -1984,11 +1984,11 @@ local function featuresprocessor(head,font,attr) local datasets = otf.dataset(tfmdata,sequences,font,attr) for s=1,#sequences do - local pardir, txtdir, success = 0, { }, false -- we could reuse txtdir and use a top pointer - local sequence = sequences[s] - local dataset = datasets[s] -- cache + local dataset = datasets[s] -- cache -- s? featurevalue = dataset and dataset[1] -- todo: pass to function instead of using a global if featurevalue then + local sequence = sequences[s] + local pardir, txtdir, success = 0, { }, false -- we could reuse txtdir and use a top pointer local attribute, chain, typ, subtables = dataset[2], dataset[3], sequence.type, sequence.subtables if chain < 0 then -- this is a limited case, no special treatments like 'init' etc |