69 [[nodiscard]] constexpr friend
bool operator==(font_metrics const&, font_metrics const&) noexcept = default;
74 [[nodiscard]] constexpr friend auto operator*(au::Quantity<LhsUnit, LhsT> const& lhs, font_metrics const& rhs) noexcept requires
std::same_as<Unit, unit::EmSquares>
78 std::conditional_t<std::is_same_v<LhsUnit, unit::PixelsPerEm>, unit::Pixels,
79 std::conditional_t<std::is_same_v<LhsUnit, unit::PointsPerEm>, unit::Points,
80 std::conditional_t<std::is_same_v<LhsUnit, unit::DipsPerEm>, unit::Dips,
84 auto r = font_metrics<result_unit, std::common_type_t<LhsT, T>>{};
85 r.ascender = lhs * rhs.ascender;
86 r.descender = lhs * rhs.descender;
87 r.line_gap = lhs * rhs.line_gap;
88 r.cap_height = lhs * rhs.cap_height;
89 r.x_height = lhs * rhs.x_height;
90 r.digit_advance = lhs * rhs.digit_advance;
91 r.line_spacing = rhs.line_spacing;
92 r.paragraph_spacing = rhs.paragraph_spacing;