mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Auto merge of #17865 - dadaa:bug1379921, r=hiro
make font-variant-alternates animatable <!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors <!-- Either: --> - [X] There are tests for these changes. The test codes are patch 2 and 3 in https://bugzilla.mozilla.org/show_bug.cgi?id=1379921 <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/17865) <!-- Reviewable:end -->
This commit is contained in:
commit
3d5eb727f6
2 changed files with 54 additions and 1 deletions
|
@ -2119,6 +2119,59 @@ fn static_assert() {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn clone_font_variant_alternates(&self) -> longhands::font_variant_alternates::computed_value::T {
|
||||
use Atom;
|
||||
% for value in "normal swash stylistic ornaments annotation styleset character_variant historical".split():
|
||||
use gecko_bindings::structs::NS_FONT_VARIANT_ALTERNATES_${value.upper()};
|
||||
% endfor
|
||||
use properties::longhands::font_variant_alternates::VariantAlternates;
|
||||
use properties::longhands::font_variant_alternates::VariantAlternatesList;
|
||||
use values::CustomIdent;
|
||||
|
||||
if self.gecko.mFont.variantAlternates == NS_FONT_VARIANT_ALTERNATES_NORMAL as u16 {
|
||||
return VariantAlternatesList(vec![].into_boxed_slice());
|
||||
}
|
||||
|
||||
let mut alternates = Vec::with_capacity(self.gecko.mFont.alternateValues.len());
|
||||
if self.gecko.mFont.variantAlternates & (NS_FONT_VARIANT_ALTERNATES_HISTORICAL as u16) != 0 {
|
||||
alternates.push(VariantAlternates::HistoricalForms);
|
||||
}
|
||||
|
||||
<%
|
||||
property_need_ident_list = "styleset character_variant".split()
|
||||
%>
|
||||
% for value in property_need_ident_list:
|
||||
let mut ${value}_list = Vec::new();
|
||||
% endfor
|
||||
|
||||
for gecko_alternate_value in self.gecko.mFont.alternateValues.iter() {
|
||||
let ident = Atom::from(gecko_alternate_value.value.to_string());
|
||||
match gecko_alternate_value.alternate {
|
||||
% for value in "Swash Stylistic Ornaments Annotation".split():
|
||||
NS_FONT_VARIANT_ALTERNATES_${value.upper()} => {
|
||||
alternates.push(VariantAlternates::${value}(CustomIdent(ident)));
|
||||
},
|
||||
% endfor
|
||||
% for value in property_need_ident_list:
|
||||
NS_FONT_VARIANT_ALTERNATES_${value.upper()} => {
|
||||
${value}_list.push(CustomIdent(ident));
|
||||
},
|
||||
% endfor
|
||||
x => {
|
||||
panic!("Found unexpected value for font-variant-alternates: {:?}", x);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
% for value in property_need_ident_list:
|
||||
if !${value}_list.is_empty() {
|
||||
alternates.push(VariantAlternates::${to_camel_case(value)}(${value}_list.into_boxed_slice()));
|
||||
}
|
||||
% endfor
|
||||
|
||||
VariantAlternatesList(alternates.into_boxed_slice())
|
||||
}
|
||||
|
||||
${impl_simple_type_with_conversion("font_variant_ligatures", "mFont.variantLigatures")}
|
||||
${impl_simple_type_with_conversion("font_variant_east_asian", "mFont.variantEastAsian")}
|
||||
${impl_simple_type_with_conversion("font_variant_numeric", "mFont.variantNumeric")}
|
||||
|
|
|
@ -1262,7 +1262,7 @@ ${helpers.single_keyword_system("font-kerning",
|
|||
flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER",
|
||||
animation_value_type="discrete")}
|
||||
|
||||
<%helpers:longhand name="font-variant-alternates" products="gecko" animation_value_type="none"
|
||||
<%helpers:longhand name="font-variant-alternates" products="gecko" animation_value_type="discrete"
|
||||
flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER"
|
||||
spec="https://drafts.csswg.org/css-fonts/#propdef-font-variant-alternates">
|
||||
use properties::longhands::system_font::SystemFont;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue