mirror of
https://github.com/servo/servo.git
synced 2025-08-08 06:55:31 +01:00
style: Refactor and add infrastructure for font metrics in style.
This commit itself only moves things around and adds an extra parameter to the `apply_declarations` function to eventually handle #14079 correctly. Probably needs a more granular API to query fonts, á la nsFontMetrics, but that's trivial to do once this is landed. Then we should make the font provider mandatory, and implement the missing stylo bits.
This commit is contained in:
parent
9fd6f0acd5
commit
6c3458767b
15 changed files with 196 additions and 94 deletions
35
components/style/font_metrics.rs
Normal file
35
components/style/font_metrics.rs
Normal file
|
@ -0,0 +1,35 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use Atom;
|
||||
use app_units::Au;
|
||||
use euclid::Size2D;
|
||||
use std::fmt;
|
||||
|
||||
/// Represents the font metrics that style needs from a font to compute the
|
||||
/// value of certain CSS units like `ex`.
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
pub struct FontMetrics {
|
||||
pub x_height: Au,
|
||||
pub zero_advance_measure: Size2D<Au>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
pub enum FontMetricsQueryResult {
|
||||
Available(Option<FontMetrics>),
|
||||
NotAvailable,
|
||||
}
|
||||
|
||||
/// A trait used to represent something capable of providing us font metrics.
|
||||
pub trait FontMetricsProvider: Send + Sync + fmt::Debug {
|
||||
/// Obtain the metrics for given font family.
|
||||
///
|
||||
/// TODO: We could make this take the full list, I guess, and save a few
|
||||
/// virtual calls.
|
||||
///
|
||||
/// This is not too common in practice though.
|
||||
fn query(&self, _font_name: &Atom) -> FontMetricsQueryResult {
|
||||
FontMetricsQueryResult::NotAvailable
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue