local dimensions, kerns if CONTEXTLMTXMODE == 0 then -- local kern_250 = { bottomright = { { kern = -250 } }, force = true } -- kerns = { -- [0x1D449] = kern_250, -- -- [0x1D44A] = kern_250, -- 𝑊 -- } dimensions = { default = { -- experimental values -- [0x02044] = { xoffset = 275, width = 600 }, -- primes [0xFE932] = { width = 200 }, [0xFE933] = { width = 500 }, [0xFE934] = { width = 800 }, [0xFE935] = { width = 1100 }, -- reverse primes [0xFE935] = { width = 200 }, [0xFE936] = { width = 500 }, [0xFE937] = { width = 800 }, }, } end -- When set this will bypass the italic correction hackery! local integral_variants = { bottomright = -0.20 } -- local integral_top = { topright = 0.05 } local integral_bottom = { bottomright = -0.45 } return { name = "lucida-opentype-math", version = "1.00", comment = "Goodies that complement lucida opentype.", author = "Hans Hagen & Mikael Sundqvist", copyright = "ConTeXt development team", mathematics = { parameters = { RadicalDisplayStyleVerticalGap = 100, NoLimitSupFactor = 0, NoLimitSubFactor = 900, FractionRuleThickness = 55, -- AccentBaseHeight = 650, AccentBaseDepth = 150, RadicalDegreeBottomRaisePercent = 50, RadicalKernAfterDegree = -600, -- RadicalRuleThickness = 35, -- 40 in font (46 in demi) DelimiterPercent = 90, DelimiterShortfall = 400, -- DisplayOperatorMinHeight = 1800, -- 1300 in font (only one) PrimeRaisePercent = 60, -- 50 default PrimeRaiseComposedPercent = 50, -- 25 default }, tweaks = { aftercopying = { { tweak = "version", expected = "Version 1.802", }, -- { -- tweak = "substitutes", -- list = { -- [0x2264] = "ss03", -- [0x2265] = "ss03", -- } -- }, -- \definefontfeature[mathlucida][copymathscripts=yes] -- \definefontfeature[mathlucida][copymathscripts=yes,ss04=yes] -- 0xFEOO should be chancery style, if present { tweak = "variants", kind = "script", feature = "ss04",-- this changes to chancery style for lucida -- feature = false, -- use the saved ones (see typescript) selector = 0xFE00, }, -- 0xFEO1 should be roundhand style, if present { tweak = "variants", kind = "script", selector = 0xFE01, }, { tweak = "dimensions", list = { -- these we fix here ["0x23DC.parts.1"] = { xoffset = -0.075, height = .4, yoffset = -0.6 }, ["0x23DC.parts.2"] = { height = .4, yoffset = -0.6 }, ["0x23DC.parts.3"] = { xoffset = 0.075, height = .4, yoffset = -0.6 }, ["0x23DD.parts.1"] = { xoffset = -0.075, depth = .8, yoffset = 0.2 }, ["0x23DD.parts.2"] = { depth = .8, yoffset = 0.2 }, ["0x23DD.parts.3"] = { xoffset = 0.075, depth = .8, yoffset = 0.2 }, -- The < and > are slightly too small. We scale them by 867/795 ["0x003C"] = { scale = 1.09057, width = 1.09057, height = 1.09057 }, ["0x003E"] = { scale = 1.09057, width = 1.09057, height = 1.09057 }, -- The = is too big if in ss03. We scale it by 795/867 (not working like this) -- ["0x003D.ss03"] = { scale = 0.916955, width = 0.916955, height = 0.916955 }, -- these are done later using the AccentBase* parameters -- [0x23DC] = { height = .2, yoffset = -0.8 }, -- [0x23DD] = { depth = .6, yoffset = 0.4 }, -- ["0x7C.variants.1"] = { squeeze = 0.75, height = 0.75, depth = 0.75 }, -- ["0x7C.variants.2"] = { squeeze = 0.75, height = 0.75, depth = 0.75 }, -- ["0x7C.variants.3"] = { squeeze = 0.75, height = 0.75, depth = 0.75 }, -- ["0x7C.variants.4"] = { squeeze = 0.75, height = 0.75, depth = 0.75 }, -- going zero makes them be ignored ["0x7C.variants.3"]={ squeeze = 0.90, height = 0.90, depth = 0.90 }, ["0x7C.variants.4"]={ squeeze = 0.80, height = 0.80, depth = 0.80 }, }, }, { tweak = "kerns", list = { [0x2F] = { topleft = -0.2, -- bottomleft = 0, -- topright = 0, bottomright = -0.2, }, ["0x7D.parts.top"] = { topright = -0.15, }, -- right brace top ["0x7D.parts.bottom"] = { bottomright = -0.15, }, -- right brace bottom ["0x7D.variants.*"] = { topright = -0.15, bottomright = -0.15, }, -- right brace variants ["0x29.parts.top"] = { topright = -0.25, }, -- right parenthesis top ["0x29.parts.bottom"] = { bottomright = -0.25, }, -- right parenthesis bottom ["0x29.variants.*"] = { topright = -0.2, bottomright = -0.2, }, -- right parenthesis variants ["0x221A.parts.top"] = { topright = 0.2, }, -- right radical top ["0x221A.parts.bottom"] = { bottomright = 0.2, }, -- right radical bottom ["0x221A.variants.*"] = { topright = 0.2, bottomright = 0.2, }, -- right radical variants -- angle [0x27E9] = { topright = -0.2, bottomright = -0.2 }, ["0x27E9.variants.*"] = { topright = -0.3, bottomright = -0.3 }, [0x27EB] = { topright = -0.2, bottomright = -0.2 }, ["0x27EB.variants.*"] = { topright = -0.3, bottomright = -0.3 }, ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom, ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom, ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom, ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom, ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom, ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom, ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom, ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom, ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom, }, }, { tweak = "fixprimes", factor = 0.8, -- accent base height -- smaller = true, -- replace multiples scale = 1.1, -- glyph scale -- fake = 0.65, -- replace multiples with this width proportion -- keep = true, -- keep the text size prime (aka minute) }, { tweak = "checkspacing", }, { tweak = "addscripts", }, { tweak = "accentdimensions", }, { tweak = "addrules", }, }, }, alternates = { textitalic = { feature = 'ss01', value = 1, comment = "Mathematical Alternative Lowercase Italic" }, arrow = { feature = 'ss02', value = 1, comment = "Mathematical Alternative Smaller Arrows" }, operator = { feature = 'ss03', value = 1, comment = "Mathematical Alternative Smaller Operators" }, calligraphic = { feature = 'ss04', value = 1, comment = "Mathematical Alternative Calligraphic Characters" }, zero = { feature = 'ss05', value = 1, comment = "Mathematical Alternative Zero" }, }, bigslots = { 1, 2, 3, 4 }, -- -- experimental fixes for mkiv: -- dimensions = dimensions, kerns = kerns, }, }