-- This patch code is moved from font-pat.lua to this goodies
-- files as it does not belong in the core code.

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","asana",function(data,filename) patch(data,filename,1350) end)

local function less(value,target,original)
    -- officially we should check the original
    return 0.25 * value
end

local function more(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 = "asana-math",
    version = "1.00",
    comment = "Goodies that complement asana.",
    author = "Hans Hagen",
    copyright = "ConTeXt development team",
    mathematics = {
        parameters = {
         -- DisplayOperatorMinHeight         = 0, -- more
         -- StackBottomDisplayStyleShiftDown = 0,
         -- StackBottomShiftDown             = 0,
         -- StackDisplayStyleGapMin          = 0,
         -- StackGapMin                      = 0,
         -- StackTopDisplayStyleShiftUp      = 0,
         -- StackTopShiftUp                  = 0,
         -- StretchStackBottomShiftDown      = 0,
         -- StretchStackGapAboveMin          = 0,
         -- StretchStackGapBelowMin          = 0,
         -- StretchStackTopShiftUp           = 0,
            StackBottomDisplayStyleShiftDown = less,
            StackBottomShiftDown             = less,
            StackDisplayStyleGapMin          = less,
            StackGapMin                      = less,
            StackTopDisplayStyleShiftUp      = less,
            StackTopShiftUp                  = less,
            StretchStackBottomShiftDown      = less,
            StretchStackGapAboveMin          = less,
            StretchStackGapBelowMin          = less,
            StretchStackTopShiftUp           = less,
        }
    }
}

