summaryrefslogtreecommitdiff
path: root/tex/context/fonts/mkiv/cambria-math.lfg
blob: 6415069e66e88be11f8b01a3d7d9d7298d1fbe17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
-- This patch code is moved from font-pat.lua to this goodies
-- files as it does not belong in the core code.

-- This is a fix to the font itself i.e. the cached instance will
-- be patched. When the goodie file is loaded the patch will be
-- added to the patch list. No goodies setting is needed with
-- the filename.

local patches = fonts.handlers.otf.enhancers.patches

local function patch(data,filename,threshold)
    local m = data.metadata.math
    if m then
        local d = m.DisplayOperatorMinHeight or 0
        if d < threshold then
            patches.report("DisplayOperatorMinHeight(%s -> %s)",d,threshold)
            m.DisplayOperatorMinHeight = threshold
        end
    end
end

patches.register("after","analyze math","cambria", function(data,filename) patch(data,filename,2800) end)
patches.register("after","analyze math","cambmath",function(data,filename) patch(data,filename,2800) end)

-- This is a runtime fix, but then we need to explicitly set
-- the goodies parameter for the font. As a demonstration we
-- we do both.

local function FixDisplayOperatorMinHeight(value,target,original)
    local o = original.mathparameters.DisplayOperatorMinHeight
    if o < 2800 then
        return 2800 * target.parameters.factor
    else
        return value -- already scaled
    end
end

return {
    name = "cambria-math",
    version = "1.00",
    comment = "Goodies that complement cambria.",
    author = "Hans Hagen",
    copyright = "ConTeXt development team",
    mathematics = {
        parameters = {
            DisplayOperatorMinHeight = FixDisplayOperatorMinHeight,
        }
    }
}