-- 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,
        },
     -- kernpairs = { -- \setupmathematics[kernpairs=yes]
     --     [0x1D44E] = {
     --         [0x1D44F] = 1000, -- 𝑎𝑏 demo
     --     }
     -- },
    },
}
