local common = fonts.goodies.load("common-math.lfg") local presets = common.mathematics.tweaks.presets -- local integral_variants = { bottomright = -0.4 } -- ----- integral_top = { topright = 0.05 } -- local integral_bottom = { bottomright = -0.35 } return { name = "stix-two-math", version = "1.00", comment = "Goodies that complement stix two opentype.", author = "Hans Hagen & Mikael Sundqvist", copyright = "ConTeXt development team", mathematics = { alternates = { -- lambdabar = { feature = 'cv01', value = 1, comment = "Mathematical Alternative Lambda Bar" }, -- ramshorn = { feature = 'cv02', value = 1, comment = "Mathematical Alternative Rams Horn" }, -- emptyset = { feature = 'cv03', value = 1, comment = "Mathematical Alternative Empty Set" }, -- setminus = { feature = 'cv04', value = 1, comment = "Mathematical Alternative Setminus" }, -- calligraphic = { feature = 'ss01', value = 1, comment = "Mathematical Alternative Calligraphic Characters" }, -- We do this differently -- italic = { feature = 'ss02', value = 1, comment = "Mathematical Alternative Lowercase Italic" }, -- barred = { feature = 'ss03', value = 1, comment = "Mathematical Alternative Barred Characters" }, -- hbar, lambdabar etc -- primes = { feature = 'ss04', value = 1, comment = "Mathematical Alternative Primes" }, -- larger/lower primes, minute etc -- arrow = { feature = 'ss05', value = 1, comment = "Mathematical Alternative Smaller Arrows" }, -- narrower = { feature = 'ss06', value = 1, comment = "Mathematical Alternative Narrower Elements" }, -- narrower/shorter element etc -- small = { feature = 'ss07', value = 1, comment = "Mathematical Alternative Smaller Operators" }, -- upright = { feature = 'ss08', value = 1, comment = "Mathematical Alternative Upright Symbols" }, -- upright integrals etc. -- negated = { feature = 'ss09', value = 1, comment = "Mathematical Alternative Negated Symbols" }, -- relation = { feature = 'ss10', value = 1, comment = "Mathematical Alternative Relations" }, -- negatedset = { feature = 'ss11', value = 1, comment = "Mathematical Alternative Negated Set Symbols" }, -- propfrown = { feature = 'ss12', value = 1, comment = "Mathematical Alternative Proportional and Frown" }, -- negsine = { feature = 'ss13', value = 1, comment = "Mathematical Alternative Negated Sine Wave" }, -- intprod = { feature = 'ss14', value = 1, comment = "Mathematical Alternative Interior Products" }, -- capcup = { feature = 'ss15', value = 1, comment = "Mathematical Alternative Intersection and Union with serif" }, -- circled = { feature = 'ss16', value = 1, comment = "Mathematical Alternative Circled Operators" }, -- simvar = { feature = 'ss20', value = 1, comment = "Mathematical Alternative Similar and some more unrelated" }, -- -- demo features: -- negated8774 = { -- feature = 'ss09', -- value = 1, -- comment = "Mathematical Alternative Negated 8774", -- list = { [8774] = true }, -- }, -- negated8775 = { -- feature = 'ss09', -- value = 1, -- comment = "Mathematical Alternative Negated 8775", -- list = { [8775] = true }, -- }, }, parameters = { -- AccentBaseDepth = 30, -- FlattenedAccentTopShiftUp = 0, -- RadicalKernAfterDegree = -500, DelimiterPercent = 90, DelimiterShortfall = 400, DelimiterDisplayPercent = 90, DelimiterDisplayShortfall = 400, -- DisplayOperatorMinHeight = 1800, -- 1800 in font PrimeShiftUp = "1.15*SuperscriptShiftUp", PrimeShiftUpCramped = "1.15*SuperscriptShiftUp", -- RadicalDisplayStyleVerticalGap = "RadicalVerticalGap", --170, 85 -- -- SuperscriptSnap = 1000, -- -- SubscriptSnap = 500, }, tweaks = { aftercopying = { { tweak = "version", expected = "Version 2.12 b168", }, { tweak = "fixprimes", factor = 0.9, }, { tweak = "addmirrors", }, { tweak = "addcomposites", }, -- MS: we need to check this, I moved it up -- { -- tweak = "replacealphabets", -- list = { -- { -- source = "uppercasescript", -- target = "uppercasecalligraphic", -- unicode = "uppercasescript", -- }, -- { -- source = "uppercasescript", -- target = "uppercasescript", -- feature = "ss01", -- }, -- { -- source = "uppercaseboldscript", -- target = "uppercaseboldcalligraphic", -- unicode = "uppercasescriptbold", -- }, -- { -- source = "uppercaseboldscript", -- target = "uppercaseboldscript", -- feature = "ss01", -- }, -- { -- source = { first = 0xE17D, last = 0xE195 }, -- target = "uppercasesansgreek", -- unicode = "uppercasegreeknormal", -- }, -- { -- source = { first = 0xE196, last = 0xE1AE }, -- maybe last = E1B3 -- target = "lowercasesansgreek", -- unicode = "lowercasegreeknormal", -- }, -- { -- source = { first = 0xE1BF, last = 0xE1D7 }, -- target = "uppercaseitalicsansgreek", -- unicode = "uppercasegreekitalic", -- }, -- { -- source = { first = 0xE1D8, last = 0xE1F0 }, -- maybe last = E1F5 -- target = "lowercaseitalicsansgreek", -- unicode = "lowercasegreekitalic", -- }, -- }, -- }, -- { -- tweak = "replacealphabets", -- filename = "TeXGyrePagellaMath.otf", -- list = { -- { unicodes = { 0x007C, 0x2223, 0x2016, 0x2980, 0x007C } }, -- single single double triple -- } -- }, presets.scripttocalligraphic { }, presets.rsfstoscript { }, presets.rsfsuprighttoscript { }, presets.moderntocalligraphic { }, presets.eulertocalligraphic { }, presets.xitsarabic { rscale = 0.95 }, presets.fallbacks { }, presets.moveitalics { correct = true }, presets.moveitalics { correct = true, letters = true }, presets.moveintegrals { }, presets.wipeitalics { }, { tweak = "checkaccents", }, -- Extensibles use .s1 (variant 1), so we cannot wipe all -- { -- tweak = "wipevariants", -- list = { -- [0x20D6] = 3, -- [0x20D7] = 3, -- [0x20EE] = 3, -- [0x20EF] = 3, -- }, -- }, { tweak = "simplifykerns", }, -- { -- tweak = "kerns", -- list = { -- [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 -- ["0x29.parts.top"] = { topright = -0.1, }, -- right parenthesis top -- ["0x29.parts.bottom"] = { bottomright = -0.1 }, -- 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 -- [0x27E9] = { topright = -0.1, bottomright = -0.1 }, -- angle -- ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 }, -- [0x27EB] = { topright = -0.1, bottomright = -0.1 }, -- ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 }, -- -- -- ["0x222B.parts.bottom"] = { bottomright = -0.30 }, -- int -- }, -- }, -- 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 = "radicaldegreeanchors", -- list = { -- [0x221A] = { location = "left", hfactor = 0.00, vfactor = 0.7 }, -- ["0x221A.variants.*"] = { location = "left", hfactor = 0.00, vfactor = 0.55 }, -- ["0x221A.variants.3"] = { location = "left", hfactor = 0.00, vfactor = .525 }, -- ["0x221A.parts.bottom"] = { location = "left", hfactor = 0.05, vfactor = 1.00 }, -- } -- }, { tweak = "flattenaccents", }, { 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 = { -- -- [0x00302] = { width = 1.2, anchor = 1.10, xoffset = .05 }, -- widehat -- -- [0x00303] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widetilde -- -- [0x00306] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widebreve -- -- [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 -- [0x020DB] = { yoffset = 0.025, 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 = "checkspacing", }, { tweak = "addscripts", }, { tweak = "accentdimensions", }, { tweak = "addrules", }, { tweak = "addarrows", }, { tweak = "fixslashes", }, { tweak = "replacerules", -- minus = { -- height = .233, -- yoffset = .768, -- leftoffset = .08, -- rightoffset = .08, -- }, -- fraction = { -- height = .233, -- yoffset = .768, -- }, -- radical = { -- height = .233, -- yoffset = .768, -- leftoffset = .08, -- rightoffset = .08, -- }, -- stacker = { -- height = .233, -- yoffset = .768, -- }, }, { tweak = "addactuarian", }, { tweak = "addfourier", variant = 1, }, { tweak = "addprimed", }, -- { -- tweak = "addparts", -- list = { -- [0x21F4] = { -- horizontal = true, -- template = 0x2192, -- sequence = { -- { glyph = "first", factor = 2 }, -- { glyph = 0x2218 }, -- { glyph = "first", factor = 2 }, -- { glyph = "last" }, -- } -- } -- } -- }, -- { -- tweak = "addbars", -- advance = 0.3, -- check = true, -- only add triples -- }, -- this is the mkiv section -- { -- tweak = "emulatelmtx", -- feature = "emulatelmtx", -- comment = "this is for mkiv", -- }, }, }, bigslots = { 1, 3, 5, 7 }, }, }