diff options
author | Hans Hagen <pragma@wxs.nl> | 2010-03-18 14:42:00 +0100 |
---|---|---|
committer | Hans Hagen <pragma@wxs.nl> | 2010-03-18 14:42:00 +0100 |
commit | 66a814af45f6ebe7ff0210238b2b9eba7dd3a499 (patch) | |
tree | c227b9351820db8c6084b82777c60b4367c80dd8 /tex/context/base/font-gds.lua | |
parent | f8583123d8e264910387d015f4d6576551fe0ee4 (diff) | |
download | context-66a814af45f6ebe7ff0210238b2b9eba7dd3a499.tar.gz |
beta 2010.03.18 14:42
Diffstat (limited to 'tex/context/base/font-gds.lua')
-rw-r--r-- | tex/context/base/font-gds.lua | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/tex/context/base/font-gds.lua b/tex/context/base/font-gds.lua index 2a6d9f8e4..0013cb2ff 100644 --- a/tex/context/base/font-gds.lua +++ b/tex/context/base/font-gds.lua @@ -9,6 +9,8 @@ if not modules then modules = { } end modules ['font-gds'] = { local type, next = type, next local gmatch = string.gmatch +local trace_goodies = false trackers.register("fonts.goodies", function(v) trace_goodies = v end) + -- goodies=name,colorscheme=,featureset= -- -- goodies=auto @@ -36,6 +38,13 @@ local function getgoodies(filename) -- maybe a merge is better data[filename] = false -- signal for not found else goodies = dofile(fullname) or false + if not goodies then + logs.report("fonts", "goodie file '%s' is invalid",fullname) + return nil + elseif trace_goodies then + logs.report("fonts", "goodie file '%s' is loaded",fullname) + end + goodies.name = goodies.name or "no name" for name, fnc in next, list do fnc(goodies) end @@ -93,14 +102,30 @@ local function flattened(t,tt) return tt end +fonts.flattened_features = flattened + +function fonts.goodies.prepare_features(goodies,name,set) + if set then + local ff = fonts.flattened_features(set) + local fullname = goodies.name .. "::" .. name + local n, s = preset_context(fullname,"",ff) + goodies.featuresets[name] = s -- set + if trace_goodies then + logs.report("fonts", "feature set '%s' gets number %s and name '%s'",name,n,fullname) + end + return n + end +end + local function initialize(goodies,tfmdata) local featuresets = goodies.featuresets local goodiesname = goodies.name if featuresets then - for name,set in next, featuresets do - local ff = flattened(set) - local n, s = preset_context(goodiesname .. "::" .. name,"",ff) - featuresets[name] = s -- set + if trace_goodies then + logs.report("fonts", "checking featuresets in '%s'",goodies.name) + end + for name, set in next, featuresets do + fonts.goodies.prepare_features(goodies,name,set) end end end |