// Copyright © SixtyFPS GmbH // SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0 import { Slider, Palette } from "std-widgets.slint"; component MetricsLabel { in property name; in property value; in property baseline; in property color: t.color; out property text-width: t.preferred-width; Rectangle { y: root.baseline - root.value; height: 1px; border-color: root.color; border-width: 1px; t := Text { x: 0; //parent.width - self.width; y: - self.height; text: { if root.name == "baseline" { return root.name; } "\{root.name} (\{Math.round(root.value / 1px)}px)"; } } } } import "../../../demos/printerdemo/ui/fonts/NotoSans-Regular.ttf"; export component AppWindow inherits Window { width: l.x + l.width; height: l.y + 2 * l.font-size; l := Text { y: self.font-size / 2; x: max(baseline.text-width, ascent.text-width, descent.text-width, x-height.text-width, cap-height.text-width); text: "Sphinx"; font-family: "Noto Sans"; font-size: 96px; } baseline := MetricsLabel { x: 0; y: l.y; width: 100%; name: "baseline"; value: 0; baseline: l.font-metrics.ascent; color: red; } ascent := MetricsLabel { x: 0; y: l.y; width: 100%; name: "ascent"; value: l.font-metrics.ascent; baseline: l.font-metrics.ascent; } descent := MetricsLabel { x: 0; y: l.y; width: 100%; name: "descent"; value: l.font-metrics.descent; baseline: l.font-metrics.ascent; } x-height := MetricsLabel { x: 0; y: l.y; width: 100%; name: "x-height"; value: l.font-metrics.x-height; baseline: l.font-metrics.ascent; } cap-height := MetricsLabel { x: 0; y: l.y; width: 100%; name: "cap-height"; value: l.font-metrics.cap-height; baseline: l.font-metrics.ascent; } }