mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
style: Move font-language-override outside of mako
This commit is contained in:
parent
5d3a90ecce
commit
38eae70666
5 changed files with 157 additions and 158 deletions
|
@ -5,6 +5,7 @@
|
|||
//! Computed values for font properties
|
||||
|
||||
use app_units::Au;
|
||||
use byteorder::{BigEndian, ByteOrder};
|
||||
use std::fmt;
|
||||
use style_traits::ToCss;
|
||||
use values::CSSFloat;
|
||||
|
@ -276,6 +277,54 @@ impl FontVariantAlternates {
|
|||
}
|
||||
}
|
||||
|
||||
/// font-language-override can only have a single three-letter
|
||||
/// OpenType "language system" tag, so we should be able to compute
|
||||
/// it and store it as a 32-bit integer
|
||||
/// (see http://www.microsoft.com/typography/otspec/languagetags.htm).
|
||||
#[derive(Clone, Copy, Debug, Eq, MallocSizeOf, PartialEq)]
|
||||
pub struct FontLanguageOverride(pub u32);
|
||||
|
||||
impl FontLanguageOverride {
|
||||
#[inline]
|
||||
/// Get computed default value of `font-language-override` with 0
|
||||
pub fn zero() -> FontLanguageOverride {
|
||||
FontLanguageOverride(0)
|
||||
}
|
||||
}
|
||||
|
||||
impl ToCss for FontLanguageOverride {
|
||||
fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write {
|
||||
use std::str;
|
||||
|
||||
if self.0 == 0 {
|
||||
return dest.write_str("normal")
|
||||
}
|
||||
let mut buf = [0; 4];
|
||||
BigEndian::write_u32(&mut buf, self.0);
|
||||
// Safe because we ensure it's ASCII during computing
|
||||
let slice = if cfg!(debug_assertions) {
|
||||
str::from_utf8(&buf).unwrap()
|
||||
} else {
|
||||
unsafe { str::from_utf8_unchecked(&buf) }
|
||||
};
|
||||
slice.trim_right().to_css(dest)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "gecko")]
|
||||
impl From<u32> for FontLanguageOverride {
|
||||
fn from(bits: u32) -> FontLanguageOverride {
|
||||
FontLanguageOverride(bits)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "gecko")]
|
||||
impl From<FontLanguageOverride> for u32 {
|
||||
fn from(v: FontLanguageOverride) -> u32 {
|
||||
v.0
|
||||
}
|
||||
}
|
||||
|
||||
impl ToComputedValue for specified::MozScriptMinSize {
|
||||
type ComputedValue = MozScriptMinSize;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue