use {
super::{
FamilyName,
FontDisplay,
FontFaceAtRule,
FontFeatureSettings,
FontLanguageOverride,
FontStretch,
FontStyle,
FontWeight,
Source,
},
cssparser::UnicodeRange,
};
pub struct FontFace<'a>(pub &'a FontFaceAtRule);
impl<'a> FontFace<'a> {
pub fn family(&self) -> &FamilyName {
self.0.family.as_ref().unwrap()
}
pub fn sources(&self) -> &Vec<Source> {
self.0.sources.as_ref().unwrap()
}
pub fn style(&self) -> FontStyle {
if let Some(ref value) = self.0.style {
*value
} else {
FontStyle::normal
}
}
pub fn weight(&self) -> FontWeight {
if let Some(ref value) = self.0.weight {
*value
} else {
FontWeight::normal
}
}
pub fn stretch(&self) -> FontStretch {
if let Some(ref value) = self.0.stretch {
*value
} else {
FontStretch::normal
}
}
pub fn display(&self) -> FontDisplay {
if let Some(ref value) = self.0.display {
*value
} else {
FontDisplay::auto
}
}
pub fn unicode_range(&self) -> Vec<UnicodeRange> {
if let Some(ref value) = self.0.unicode_range {
value.clone()
} else {
vec![UnicodeRange {
start: 0,
end: 0x10FFFF,
}]
}
}
pub fn feature_settings(&self) -> FontFeatureSettings {
if let Some(ref value) = self.0.feature_settings {
value.clone()
} else {
FontFeatureSettings::normal()
}
}
pub fn language_override(&self) -> FontLanguageOverride {
if let Some(ref value) = self.0.language_override {
*value
} else {
FontLanguageOverride::normal
}
}
}