def text.baseline

gralha-svg-render@0.1.0.1 · svg.bend:3360

import gralha-svg-render@0.1.0.1/svg.bend as Svg
import Base
import gralha-text-scan@0.1.0.1/scan.bend as U
import gralha-truetype@0.1.0.1/font.bend as Font

3360def text.baseline(+font: TextFont) -> F32:
3361  TextFont{size, face, weight, slant, anchor, letter, word, shift, baseline, kern, preserve, book} = font
3362  +base = baseline
3363  +ascender = Font.font.metric(book, face, "ascender", 1.069)
3364  +descender = Font.font.metric(book, face, "descender", F32.neg(0.293))
3365  (U.choose(F32, U.string.equal(base, "middle"), (size * Font.font.metric(book, face, "xheight", 0.536) / 2.0 : F32),
3366    U.choose(F32, U.string.equal(base, "central"), (size * (ascender + descender) / 2.0 : F32),
3367      U.choose(F32, U.string.equal(base, "text-before-edge") || U.string.equal(base, "before-edge"), (size * ascender : F32),
3368        U.choose(F32, U.string.equal(base, "text-after-edge") || U.string.equal(base, "after-edge"), (size * descender : F32), 0.0)))) - shift : F32)

Uses (11)

Used by (1)