///|
/// `Font` represents an entire font.
pub(all) struct Font {
id : String
horiz_adv_x : Double
units_per_em : Double
ascent : Double
descent : Double
glyphs : Map[String, Glyph]
} derive(Eq, FromJson, ToJson)
///|
pub impl Show for Font with output(self, logger) {
let { id, horiz_adv_x, units_per_em, ascent, descent, glyphs } = self
logger.write_string(
(
$|{id: \{id.escape(quote=true)}, horiz_adv_x: \{horiz_adv_x}, units_per_em: \{units_per_em}, ascent: \{ascent}, descent: \{descent}, glyphs: \{glyphs}}
),
)
}
///|
test "Font show interface" {
let font = {
id: "test-font",
horiz_adv_x: 1000.0,
units_per_em: 1000.0,
ascent: 800.0,
descent: -200.0,
glyphs: {
"A": {
char: "A",
horiz_adv_x: 500.0,
gerber_lp: "d",
d: "M0 0L100 0L100 100Z",
xmin: 0.0,
ymin: 0.0,
xmax: 100.0,
ymax: 100.0,
},
},
}
inspect(
font,
content=(
#|{id: "test-font", horiz_adv_x: 1000, units_per_em: 1000, ascent: 800, descent: -200, glyphs: {"A": {char: "A", horiz_adv_x: 500, gerber_lp: "d", d: "M0 0L100 0L100 100Z", xmin: 0, ymin: 0, xmax: 100, ymax: 100}}}
),
)
}
///|
/// `FontError` represents an error that occurred during font processing.
pub(all) suberror FontError {
FontError(String)
} derive(Eq)
///|
pub impl Show for FontError with output(self, logger) {
let FontError(err) = self
logger.write_string(
(
$|FontError(\{err.escape(quote=true)})
),
)
}