diff options
author | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-06-06 20:26:50 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-06-06 20:26:50 +0200 |
commit | d78828b55508aae49922032ebd9117804a940f73 (patch) | |
tree | 431d8c001f14d8001ba11c6e2803ef83ba65c9fe /tex/context/base/mkiv/font-sel.lua | |
parent | 7a761c8aebf67ee022aa4857247518ad6997d5c1 (diff) | |
download | context-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.lua | 146 |
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 |