summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/font-sel.lua
diff options
context:
space:
mode:
authorContext Git Mirror Bot <phg42.2a@gmail.com>2016-06-06 20:26:50 +0200
committerContext Git Mirror Bot <phg42.2a@gmail.com>2016-06-06 20:26:50 +0200
commitd78828b55508aae49922032ebd9117804a940f73 (patch)
tree431d8c001f14d8001ba11c6e2803ef83ba65c9fe /tex/context/base/mkiv/font-sel.lua
parent7a761c8aebf67ee022aa4857247518ad6997d5c1 (diff)
downloadcontext-d78828b55508aae49922032ebd9117804a940f73.tar.gz
2016-06-06 19:57:00
Diffstat (limited to 'tex/context/base/mkiv/font-sel.lua')
-rw-r--r--tex/context/base/mkiv/font-sel.lua146
1 files changed, 75 insertions, 71 deletions
diff --git a/tex/context/base/mkiv/font-sel.lua b/tex/context/base/mkiv/font-sel.lua
index 4620319f5..0889d2fcd 100644
--- a/tex/context/base/mkiv/font-sel.lua
+++ b/tex/context/base/mkiv/font-sel.lua
@@ -6,58 +6,58 @@ if not modules then modules = { } end modules ['font-sel'] = {
license = "GNU General Public License"
}
-local context = context
-local cleanname = fonts.names.cleanname
-local gsub, splitup, find = string.gsub, string.splitup, string.find
-local concat, sortedkeys = table.concat, table.sortedkeys
-local merge, remove = table.merge, table.remove
-local splitbase, removesuffix = file.splitbase, file.removesuffix
-local splitat, lpegmatch = lpeg.splitat, lpeg.match
-
-local formatters = string.formatters
-local settings_to_array = utilities.parsers.settings_to_array
-local settings_to_hash = utilities.parsers.settings_to_hash
-
-local v_default = interfaces.variables.default
-
-local implement = interfaces.implement
-
-local selectfont = fonts.select or { }
-fonts.select = selectfont
-
-local data = selectfont.data or { }
-selectfont.data = data
-
-local fallbacks = selectfont.fallbacks or { }
-selectfont.fallbacks = fallbacks
-
-local methods = selectfont.methods or { }
-selectfont.methods = methods
-
-local extras = selectfont.extras or { }
-selectfont.extras = extras
-
-local alternatives = selectfont.alternatives or { }
-selectfont.alternatives = alternatives
-
-local presets = selectfont.presets or { }
-selectfont.presets = presets
-
-local defaults = selectfont.defaults or { }
-selectfont.defaults = defaults
-
-local getlookups = fonts.names.getlookups
-local registerdesignsizes = fonts.goodies.designsizes.register
-local bodyfontsizes = storage.shared.bodyfontsizes
-
-local ctx_definefontsynonym = context.definefontsynonym
-local ctx_resetfontfallback = context.resetfontfallback
-local ctx_startfontclass = context.startfontclass
-local ctx_stopfontclass = context.stopfontclass
-local ctx_loadfontgoodies = context.loadfontgoodies
-local ctx_definefontfallback = context.definefontfallback
-local ctx_definetypeface = context.definetypeface
-local ctx_definebodyfont = context.definebodyfont
+local context = context
+local cleanname = fonts.names.cleanname
+local gsub, splitup, find, lower = string.gsub, string.splitup, string.find, string.lower
+local concat, sortedkeys = table.concat, table.sortedkeys
+local merge, remove = table.merge, table.remove
+local splitbase, removesuffix = file.splitbase, file.removesuffix
+local splitat, lpegmatch = lpeg.splitat, lpeg.match
+
+local formatters = string.formatters
+local settings_to_array = utilities.parsers.settings_to_array
+local settings_to_hash = utilities.parsers.settings_to_hash
+
+local v_default = interfaces.variables.default
+
+local implement = interfaces.implement
+
+local selectfont = fonts.select or { }
+fonts.select = selectfont
+
+local data = selectfont.data or { }
+selectfont.data = data
+
+local fallbacks = selectfont.fallbacks or { }
+selectfont.fallbacks = fallbacks
+
+local methods = selectfont.methods or { }
+selectfont.methods = methods
+
+local extras = selectfont.extras or { }
+selectfont.extras = extras
+
+local alternatives = selectfont.alternatives or { }
+selectfont.alternatives = alternatives
+
+local presets = selectfont.presets or { }
+selectfont.presets = presets
+
+local defaults = selectfont.defaults or { }
+selectfont.defaults = defaults
+
+local getlookups = fonts.names.getlookups
+local registerdesignsizes = fonts.goodies.designsizes.register
+local bodyfontsizes = storage.shared.bodyfontsizes
+
+local ctx_definefontsynonym = context.definefontsynonym
+local ctx_resetfontfallback = context.resetfontfallback
+local ctx_startfontclass = context.startfontclass
+local ctx_stopfontclass = context.stopfontclass
+local ctx_loadfontgoodies = context.loadfontgoodies
+local ctx_definefontfallback = context.definefontfallback
+local ctx_definetypeface = context.definetypeface
+local ctx_definebodyfont = context.definebodyfont
local trace_register = false trackers.register("selectfont.register", function(v) trace_register = v end)
local trace_files = false trackers.register("selectfont.files", function(v) trace_files = v end)
@@ -70,7 +70,7 @@ local report_selectfont = logs.reporter("selectfont")
local report_files = logs.reporter("selectfont","files")
local report_features = logs.reporter("selectfont","features")
local report_goodies = logs.reporter("selectfont","goodies")
------ report_alternatives = logs.reporter("selectfont","alternatives")
+local report_alternatives = logs.reporter("selectfont","alternatives")
local report_typescript = logs.reporter("selectfont","typescripts")
defaults["rm"] = { features = { ["sc"] = "*,f:smallcaps" } }
@@ -640,18 +640,19 @@ function selectfont.fontsynonym(data,class,style,alternative,index)
local fontfiles = data.files[alternative] or data.files["tf"]
local fontsizes = sortedkeys(fontfiles)
local fallback = index ~= 0
+ local fontclass = lower(class)
--~ local fontfeature = data.features and data.features[alternative] or data.options.features
--~ local fontgoodie = data.goodies and data.goodies [alternative] or data.options.goodies
local fontfeature = selectfont.features(data,style,alternative)
local fontgoodie = selectfont.goodies (data,style,alternative)
local synonym = m_synonym[style] and m_synonym[style][alternative]
- local fontfile = formatters ["file-%s-%s-%s"](class,style,alternative)
- local fontsynonym = formatters ["synonym-%s-%s-%s"](class,style,alternative)
+ local fontfile = formatters ["file-%s-%s-%s"](fontclass,style,alternative)
+ local fontsynonym = formatters ["synonym-%s-%s-%s"](fontclass,style,alternative)
if fallback then
- fontfile = formatters ["file-%s-%s-%s-%s"](class,style,alternative,index)
- fontsynonym = formatters ["synonym-%s-%s-%s-%s"](class,style,alternative,index)
+ fontfile = formatters ["file-%s-%s-%s-%s"](fontclass,style,alternative,index)
+ fontsynonym = formatters ["synonym-%s-%s-%s-%s"](fontclass,style,alternative,index)
end
- local fontfallback = formatters["fallback-%s-%s-%s"](class,style,alternative)
+ local fontfallback = formatters["fallback-%s-%s-%s"](fontclass,style,alternative)
for _, fontsize in next, fontsizes do
--~ if trace_typescript then
--~ report_typescript("Synonym: '%s', Size: '%s', File: '%s'",fontfile,fontfiles[fontsize][1],fontfiles[fontsize][2])
@@ -678,13 +679,14 @@ function selectfont.fontsynonym(data,class,style,alternative,index)
end
function selectfont.fontfallback(data,class,style,alternative,index)
- local range = data.options.range
- local scale = data.options.rscale ~= "" and data.options.rscale or 1
- local check = data.options.check ~= "" and data.options.check or ""
- local force = data.options.force ~= "" and data.options.force or ""
- local fontfeature = data.features and data.features[alternative] or data.options.features
- local fontsynonym = formatters["synonym-%s-%s-%s-%s"](class,style,alternative,index)
- local fontfallback = formatters["fallback-%s-%s-%s"] (class,style,alternative)
+ local range = data.options.range
+ local scale = data.options.rscale ~= "" and data.options.rscale or 1
+ local check = data.options.check ~= "" and data.options.check or ""
+ local force = data.options.force ~= "" and data.options.force or ""
+ local fontfeature = data.features and data.features[alternative] or data.options.features
+ local fontclass = lower(class)
+ local fontsynonym = formatters ["synonym-%s-%s-%s-%s"](fontclass,style,alternative,index)
+ local fontfallback = formatters["fallback-%s-%s-%s"] (fontclass,style,alternative)
if index == 1 then
ctx_resetfontfallback( { fontfallback } )
end
@@ -702,7 +704,8 @@ function selectfont.filefallback(data,class,style,alternative,index)
local force = data.options.force ~= "" and data.options.force or "yes"
local fontfile = data.files[alternative] and data.files[alternative][0] or data.files["tf"][0]
local fontfeature = data.features and data.features[alternative] or data.options.features
- local fontfallback = formatters["fallback-%s-%s-%s"](class,style,alternative)
+ local fontclass = lower(class)
+ local fontfallback = formatters["fallback-%s-%s-%s"](fontclass,style,alternative)
if index == 1 then
ctx_resetfontfallback( { fontfallback } )
end
@@ -713,7 +716,7 @@ function selectfont.filefallback(data,class,style,alternative,index)
end
function selectfont.mathfallback(index,entry,class,style)
- local data = data[entry]
+ local data = data[entry]
ctx_startfontclass( { class } )
for alternative, _ in next, alternatives do
if alternative == "tf" or alternative == "bf" then
@@ -724,7 +727,7 @@ function selectfont.mathfallback(index,entry,class,style)
end
function selectfont.textfallback(index,entry,class,style)
- local data = data[entry]
+ local data = data[entry]
ctx_startfontclass( { class } )
for alternative, _ in next, alternatives do
selectfont.fontsynonym (data,class,style,alternative,index)
@@ -780,8 +783,9 @@ function selectfont.typescript(data)
end
function selectfont.bodyfont(data)
- local fontclass = data.metadata.typeface
+ local class = data.metadata.typeface
local fontstyle = data.metadata.style
+ local fontclass = lower(class)
local fontsizes = concat(sortedkeys(bodyfontsizes),",")
local fontsynonym = nil
local fontlist = { }
@@ -793,7 +797,7 @@ function selectfont.bodyfont(data)
--~ end
end
fontlist = concat(fontlist,",")
- ctx_definebodyfont( { fontclass }, { fontsizes }, { fontstyle }, { fontlist } )
+ ctx_definebodyfont( { class }, { fontsizes }, { fontstyle }, { fontlist } )
end
local m_style = {
@@ -919,4 +923,4 @@ implement {
name = "definefontfamilypreset",
actions = selectfont.definefontfamilypreset,
arguments = { "string", "string" }
-}
+} \ No newline at end of file