52 lines
1.9 KiB
Python
Executable file
52 lines
1.9 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
|
|
from utils import mathfont
|
|
import fontforge
|
|
|
|
# Create a WOFF font with glyphs for all the operator strings.
|
|
font = mathfont.create("stretchy", "Copyright (c) 2021-2024 Igalia S.L.")
|
|
|
|
font.math.AxisHeight = 0
|
|
|
|
# Set parameters for stretchy tests.
|
|
font.math.MinConnectorOverlap = mathfont.em // 2
|
|
|
|
# Make sure that underover parameters don't add extra spacing.
|
|
font.math.LowerLimitBaselineDropMin = 0
|
|
font.math.LowerLimitGapMin = 0
|
|
font.math.StretchStackBottomShiftDown = 0
|
|
font.math.StretchStackGapAboveMin = 0
|
|
font.math.UnderbarVerticalGap = 0
|
|
font.math.UnderbarExtraDescender = 0
|
|
font.math.UpperLimitBaselineRiseMin = 0
|
|
font.math.UpperLimitGapMin = 0
|
|
font.math.StretchStackTopShiftUp = 0
|
|
font.math.StretchStackGapBelowMin = 0
|
|
font.math.OverbarVerticalGap = 0
|
|
font.math.AccentBaseHeight = 0
|
|
font.math.OverbarExtraAscender = 0
|
|
|
|
# These two characters will be stretchable in both directions.
|
|
horizontalArrow = 0x295A # LEFTWARDS HARPOON WITH BARB UP FROM BAR
|
|
verticalArrow = 0x295C # UPWARDS HARPOON WITH BARB RIGHT FROM BAR
|
|
upDownArrowWithBase = 0x21A8 # UP DOWN ARROW WITH BASE
|
|
|
|
mathfont.createSizeVariants(font, aUsePUA=True, aCenterOnBaseline=False)
|
|
|
|
# Add stretchy vertical and horizontal constructions for the horizontal arrow.
|
|
mathfont.createSquareGlyph(font, horizontalArrow)
|
|
mathfont.createStretchy(font, horizontalArrow, True)
|
|
mathfont.createStretchy(font, horizontalArrow, False)
|
|
|
|
# Add stretchy vertical and horizontal constructions for the vertical arrow.
|
|
mathfont.createSquareGlyph(font, verticalArrow)
|
|
mathfont.createStretchy(font, verticalArrow, True)
|
|
mathfont.createStretchy(font, verticalArrow, False)
|
|
|
|
# U+21A8 stretches vertically using two size variants: a base glyph (of height
|
|
# half an em) and taller glyphs (of heights 1, 2, 3 and 4 em).
|
|
g = font.createChar(upDownArrowWithBase)
|
|
mathfont.drawRectangleGlyph(g, mathfont.em, mathfont.em/2, 0)
|
|
font[upDownArrowWithBase].verticalVariants = "uni21A8 v0 v1 v2 v3"
|
|
|
|
mathfont.save(font)
|