mirror of
https://github.com/servo/servo.git
synced 2025-08-07 22:45:34 +01:00
style: Allow FontMetricsProvider to produce ex height and zero width independently.
We are always able to produce an x height, but depending on whether the glyph exists, we sometimes can't produce a zero glyph width. Differential Revision: https://phabricator.services.mozilla.com/D23424
This commit is contained in:
parent
39df092bce
commit
d5f208e18c
3 changed files with 29 additions and 38 deletions
|
@ -20,7 +20,7 @@ use crate::context::{PostAnimationTasks, QuirksMode, SharedStyleContext, UpdateA
|
|||
use crate::data::ElementData;
|
||||
use crate::dom::{LayoutIterator, NodeInfo, OpaqueNode, TDocument, TElement, TNode, TShadowRoot};
|
||||
use crate::element_state::{DocumentState, ElementState};
|
||||
use crate::font_metrics::{FontMetrics, FontMetricsProvider, FontMetricsQueryResult};
|
||||
use crate::font_metrics::{FontMetrics, FontMetricsProvider};
|
||||
use crate::gecko::data::GeckoStyleSheet;
|
||||
use crate::gecko::selector_parser::{NonTSPseudoClass, PseudoElement, SelectorImpl};
|
||||
use crate::gecko::snapshot_helpers;
|
||||
|
@ -1035,10 +1035,10 @@ impl FontMetricsProvider for GeckoFontMetricsProvider {
|
|||
&self,
|
||||
context: &crate::values::computed::Context,
|
||||
base_size: FontBaseSize,
|
||||
) -> FontMetricsQueryResult {
|
||||
) -> FontMetrics {
|
||||
let pc = match context.device().pres_context() {
|
||||
Some(pc) => pc,
|
||||
None => return FontMetricsQueryResult::NotAvailable,
|
||||
None => return Default::default(),
|
||||
};
|
||||
|
||||
let size = base_size.resolve(context);
|
||||
|
@ -1066,11 +1066,14 @@ impl FontMetricsProvider for GeckoFontMetricsProvider {
|
|||
!context.in_media_query,
|
||||
)
|
||||
};
|
||||
let metrics = FontMetrics {
|
||||
x_height: Au(gecko_metrics.mXSize),
|
||||
zero_advance_measure: Au(gecko_metrics.mChSize),
|
||||
};
|
||||
FontMetricsQueryResult::Available(metrics)
|
||||
FontMetrics {
|
||||
x_height: Some(Au(gecko_metrics.mXSize)),
|
||||
zero_advance_measure: if gecko_metrics.mChSize >= 0 {
|
||||
Some(Au(gecko_metrics.mChSize))
|
||||
} else {
|
||||
None
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue