diff options
author | Hans Hagen <pragma@wxs.nl> | 2010-10-12 17:13:00 +0200 |
---|---|---|
committer | Hans Hagen <pragma@wxs.nl> | 2010-10-12 17:13:00 +0200 |
commit | 407d9151f5473b20e9072473b80d0f591a3580a1 (patch) | |
tree | cc8ee5590213dc7a7bd07f570d615aba3e34151d /tex/context/base/font-ctx.lua | |
parent | 697104b99f87677639dd0732be90c0a2cf2d4f6b (diff) | |
download | context-407d9151f5473b20e9072473b80d0f591a3580a1.tar.gz |
beta 2010.10.12 17:13
Diffstat (limited to 'tex/context/base/font-ctx.lua')
-rw-r--r-- | tex/context/base/font-ctx.lua | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/tex/context/base/font-ctx.lua b/tex/context/base/font-ctx.lua index c9a51f0ba..e5da6e868 100644 --- a/tex/context/base/font-ctx.lua +++ b/tex/context/base/font-ctx.lua @@ -407,6 +407,8 @@ function definers.stage_two(global,cs,str,size,classfeatures,fontfeatures,classf specification.mathsize = mathsize specification.textsize = textsize specification.goodies = goodies + specification.cs = cs + specification.global = global if detail and detail ~= "" then specification.method, specification.detail = method or "*", detail elseif specification.detail and specification.detail ~= "" then @@ -458,6 +460,57 @@ function definers.stage_two(global,cs,str,size,classfeatures,fontfeatures,classf statistics.stoptiming(fonts) end +function definers.define(specification) + -- + local name = specification.name + if not name or name == "" then + return -1 + else + statistics.starttiming(fonts) + -- + -- following calls expect a few properties to be set: + -- + specification.lookup = specification.lookup or "file" + specification.specification = "" -- not used + specification.size = specification.size or 655260 + specification.sub = specification.sub or "" + specification.method = specification.method or "*" + specification.detail = specification.detail or "" + specification.resolved = "" + specification.forced = "" + specification.features = { } -- via detail + -- + -- we don't care about mathsize textsize goodies fallbacks + -- + if specification.cs == "" then + specification.cs = nil + specification.global = false + elseif specification.global == nil then + specification.global = false + end + -- + local tfmdata = definers.read(specification,specification.size) + if not tfmdata then + return -1, nil + elseif type(tfmdata) == "number" then + if specification.cs then + tex.definefont(specification.global,specification.cs,tfmdata) + end + return tfmdata, fontdata[tfmdata] + else + local id = font.define(tfmdata) + tfmdata.id = id + definers.register(tfmdata,id) + if specification.cs then + tex.definefont(specification.global,specification.cs,id) + end + tfm.cleanuptable(tfmdata) + return id, tfmdata + end + statistics.stoptiming(fonts) + end +end + local enable_auto_r_scale = false experiments.register("fonts.autorscale", function(v) |