diff options
Diffstat (limited to 'components/layout_2020/flow/inline.rs')
-rw-r--r-- | components/layout_2020/flow/inline.rs | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/components/layout_2020/flow/inline.rs b/components/layout_2020/flow/inline.rs index 8ea53e6017c..bf90a9532f6 100644 --- a/components/layout_2020/flow/inline.rs +++ b/components/layout_2020/flow/inline.rs @@ -85,6 +85,7 @@ use style::properties::ComputedValues; use style::values::computed::Length; use style::values::generics::box_::VerticalAlignKeyword; use style::values::generics::font::LineHeight; +use style::values::specified::box_::BaselineSource; use style::values::specified::text::{TextAlignKeyword, TextDecorationLine}; use style::values::specified::{TextAlignLast, TextJustify}; use style::Zero; @@ -2143,13 +2144,18 @@ impl IndependentFormattingContext { /// Picks either the first or the last baseline, depending on `baseline-source`. /// <https://drafts.csswg.org/css-inline/#baseline-source> fn pick_baseline(&self, baselines: &Baselines) -> Option<Au> { - // TODO: Currently this only supports the initial `baseline-source: auto`. - if let Self::NonReplaced(non_replaced) = self { - if let NonReplacedFormattingContextContents::Flow(_) = non_replaced.contents { - return baselines.last; - } + match self.style().clone_baseline_source() { + BaselineSource::First => baselines.first, + BaselineSource::Last => baselines.last, + BaselineSource::Auto => { + if let Self::NonReplaced(non_replaced) = self { + if let NonReplacedFormattingContextContents::Flow(_) = non_replaced.contents { + return baselines.last; + } + } + baselines.first + }, } - baselines.first } fn get_block_sizes_and_baseline_offset( |