local dimensions, kerns if CONTEXTLMTXMODE == 0 then local kern_V = { bottomright = { { kern = -200 } } } local kern_W = { bottomright = { { kern = -100 } } } dimensions = { default = { -- [0x1D453] = { xoffset = 162, width = 278 + 162 },-- 𝑓 -- [0x1D453] = offset_f, -- 𝑓 -- ["1:0x1D453"] = offset_f, -- needed for compact -- ["2:0x1D453"] = offset_f, -- needed for compact -- ["*:0x1D453"] = offset_f, -- 𝑓 }, } kerns = { -- [0x1D449] = kern_V, -- 𝑉 -- ["1:0x1D449"] = kern_V, -- needed for compact -- ["2:0x1D449"] = kern_V, -- needed for compact -- [0x1D44A] = kern_W, -- 𝑊 -- ["1:0x1D44A"] = kern_W, -- needed for compact -- ["2:0x1D44A"] = kern_W, -- needed for compact -- ["*:0x1D453"] = kern_f, ["*:0x1D449"] = kern_V, -- 𝑉 ["*:0x1D44A"] = kern_W, -- 𝑊 } end -- When set this will bypass the italic correction hackery! local common = fonts.goodies.load("common-math.lfg") local presets = common.mathematics.tweaks.presets local integral_variants = { bottomright = -0.20 } ----- integral_top = { topright = 0.05 } local integral_bottom = { bottomright = -0.20 } return { name = "pagella-math", version = "1.00", comment = "Goodies that complement pagella.", author = "Hans Hagen & Mikael Sundqvist", copyright = "ConTeXt development team", mathematics = { parameters = { NoLimitSupFactor = 0, NoLimitSubFactor = 900, AccentTopShiftUp = 10, FlattenedAccentTopShiftUp = 10, -- AccentExtendMargin = 50, -- AccentBaseHeight = 0, AccentBaseDepth = 80, -- SpaceAfterScript = 0, -- SpaceAfterScript = 30, RadicalDegreeBottomRaisePercent = 60, RadicalKernAfterDegree = -500, RadicalRuleThickness = 54, -- 60 in font DelimiterPercent = 90, DelimiterShortfall = 400, DisplayOperatorMinHeight = 1800, -- 1500 in font PrimeRaisePercent = 75, -- 50 default PrimeRaiseComposedPercent = 10, -- 25 default -- RadicalKernAfterExtensible = 0, -- 0 default -- RadicalKernBeforeExtensible = 0, -- 0 default }, tweaks = { aftercopying = { { tweak = "version", expected = "Version 1.632", }, { tweak = "fixprimes", factor = 0.9, -- smaller = true, scale = 0.9, -- fake = 0.65, }, { tweak = "addmirrors", }, presets.matheulercalligraphic { rscale = 0.97 }, presets.mathrsfscript { rscale = 0.97 }, presets.mathxitsarabic { rscale = 0.95 }, { -- When it makes sense we get rid of italics. tweak = "moveitalics", correct = true, list = { "lowercasenormal", "lowercaseitalic", "lowercasebold", "lowercasebolditalic", "lowercasegreeknormal", "lowercasegreekitalic", "lowercasegreekbold", "lowercasegreekbolditalic", "uppercasenormal", "uppercaseitalic", "uppercasebold", "uppercasebolditalic", "uppercasegreeknormal", "uppercasegreekitalic", "uppercasegreekbold", "uppercasegreekbolditalic", mathematics.tweaks.subsets.dotless, } }, { tweak = "setovershoots", list = { { target = "uppercasescript", -- quad = true, -- to be decided topovershoot = 0.05, }, { target = "uppercaseboldscript", -- quad = true, -- to be decided topovershoot = 0.05, }, }, }, -- Accents are a mess. We migrate the extensibles from the combiners to the base accent -- and then need to tweak the width (which is auto set because it was zero with a large -- accent anchor offset). First we copy and fix. { tweak = "extendaccents", }, { tweak = "fixaccents", }, -- First we set the dimensions of the initial accent which started out as zero but we want -- a proper width. { tweak = "dimensions", list = { [0x00300] = { width = 0.9 }, -- widegrave [0x00301] = { width = 0.9 }, -- wideacute [0x00302] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widehat [0x00303] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widetilde [0x00306] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widebreve [0x0030A] = { width = 0.9, xoffset = -.0 }, -- widering -- weird this one [0x0030C] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widecheck }, }, -- Then we deal with all offsets and heights in one go. So we treat the initial accent -- as well as the variants here. { tweak = "dimensions", list = { -- here we want to apply to all -- [0x00300] = { yoffset = -0.02, height = .95, all = true }, -- widegrave : 0x0060 -- [0x00301] = { yoffset = -0.02, height = .95, all = true }, -- wideacute : 0x00B4 -- [0x00302] = { yoffset = -0.03, height = .95, all = true }, -- widehat : 0x02C6 -- [0x00303] = { yoffset = -0.02, height = .95, all = true }, -- widetilde : 0x02DC -- [0x00306] = { yoffset = -0.03, height = .95, all = true }, -- widebre : 0x02D8 -- [0x0030A] = { yoffset = 0.00, height = .95, all = true }, -- widering : 0x02DA -- [0x0030C] = { yoffset = -0.03, height = .95, all = true }, -- widecheck : 0x02C7 -- [0x00304] = { yoffset = -0.05, height = .95, all = true }, -- widebar : 0x00AF -- [0x00307] = { yoffset = -0.03, height = .95, all = true }, -- widedot : 0x02D9 -- [0x00308] = { yoffset = -0.03, height = .95, all = true }, -- wideddot : 0x00A8 [0x020DB] = { yoffset = -0.01, height = .95, all = true }, -- widedddot : 0x20DB (self) }, }, -- We now copy these to the not wide slots so that we can set these to stretch as well, -- if only because it is less confusing and more consistent. { tweak = "copyaccents", }, -- So far for the accents. { tweak = "fixslashes", }, { tweak = "kerns", list = { -- ["*:0x2F"] = { ... } [0x002F] = { topleft = -0.2, 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 = "checkspacing", }, { tweak = "addscripts", }, { tweak = "addprivates", }, { tweak = "accentdimensions", }, { tweak = "addrules", }, { tweak = "addarrows", }, { tweak = "addbars", advance = 0.2, }, { tweak = "addactuarian", }, { tweak = "addequals", }, { tweak = "addfourier", variant = 1, }, { tweak = "kernpairs", list = { -- beware: we kept the italic correction in spite of punctuation class [0x1D453] = { -- f [0x3A] = -.1, [0x3B] = -.1, }, }, }, }, }, bigslots = { 1, 3, 5, 7 }, alternates = { dotless = { feature = 'dtls', value = 1, comment = "Mathematical Dotless Forms" }, }, -- -- experimental fixes for mkiv: -- dimensions = dimensions, kerns = kerns, }, } -- Old values -- { -- tweak = "dimensions", -- list = { -- offset width italic -- [0x020D7] = { yoffset = -0.05 }, -- vec -- [0x1D44E] = { xoffset = 0, width = 1, italic = 0, anchor = 0.9 }, -- a -- [0x1D44F] = { xoffset = 0, width = 1, italic = 0, anchor = 1.3 }, -- b -- [0x1D450] = { xoffset = 0, width = 1, italic = 0, anchor = 0.9 }, -- c -- [0x1D451] = { xoffset = 0, width = 1, italic = 0, anchor = 0.7 }, -- d -- [0x1D452] = { xoffset = 0, width = 1, italic = 0, anchor = 0.9 }, -- e -- [0x1D453] = { xoffset = 0.50, width = 1.70, italic = 0.6, anchor = 1.2 }, -- f -- [0x1D454] = { xoffset = 0.10, width = 1.15, italic = 0.2 }, -- g -- [0x0210E] = { xoffset = 0, width = 1, italic = 0, anchor = 1.3 }, -- h -- [0x1D458] = { xoffset = 0, width = 1, italic = 0, anchor = 1.3 }, -- k -- [0x1D459] = { xoffset = 0, width = 1, italic = 0, anchor = 0.9 }, -- l -- [0x1D45E] = { xoffset = 0, width = 1, italic = 0, anchor = 0.9 }, -- q -- [0x1D463] = { xoffset = 0, width = 1, italic = 0, anchor = 1.25 }, -- v -- [0x1D464] = { xoffset = 0, width = 1, italic = 0, anchor = 1.2 }, -- w -- [0x1D6FE] = { xoffset = 0, width = 1, italic = 0, anchor = 1.2 }, -- \gamma -- [0x1D706] = { xoffset = 0, width = 1, italic = 0, anchor = 1.05 }, -- \lambda -- [0x1D70A] = { xoffset = 0, width = 1, italic = 0, anchor = 1.2 }, -- \omicron -- [0x1D70D] = { xoffset = 0, width = 1, italic = 0, anchor = 1.2 }, -- \varsigma -- [0x1D70E] = { xoffset = 0, width = 1, italic = 0, anchor = 1.1 }, -- \sigma -- [0x1D70F] = { xoffset = -.10, width = 1, italic = 0, anchor = 0.95 }, -- \tau -- [0x1D712] = { xoffset = 0.1, width = 1.2, italic = 0.1 }, -- \chi -- [0x1D713] = { xoffset = -0.05, width = 0.95, italic = 0.1 }, -- \psi -- [0x1D71D] = { xoffset = 0, width = 1, italic = 0, anchor = 0.7 }, -- \varpi -- }, -- },