diff options
author | Emilio Cobos Álvarez <emilio@crisal.io> | 2020-06-18 19:23:59 +0200 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2020-06-18 23:51:17 +0200 |
commit | e5484250db28c8ff5bfd5b71d5bac24be49e67f0 (patch) | |
tree | 33de844b42b77ac0d4884ba056667976be57f5a1 | |
parent | 7a696cbffe781f0d8be339e4f9bfe63ee7da772c (diff) | |
download | servo-e5484250db28c8ff5bfd5b71d5bac24be49e67f0.tar.gz servo-e5484250db28c8ff5bfd5b71d5bac24be49e67f0.zip |
style: Remove the dependency on font-kit from style.
No good reason to have this IMO, and helps remove some #[cfg] blocks.
-rw-r--r-- | Cargo.lock | 2 | ||||
-rw-r--r-- | components/canvas/Cargo.toml | 1 | ||||
-rw-r--r-- | components/canvas/canvas_data.rs | 39 | ||||
-rw-r--r-- | components/style/Cargo.toml | 1 | ||||
-rw-r--r-- | components/style/lib.rs | 2 | ||||
-rw-r--r-- | components/style/values/computed/font.rs | 51 |
6 files changed, 35 insertions, 61 deletions
diff --git a/Cargo.lock b/Cargo.lock index a0ff6a51af2..ea421cb5697 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -519,6 +519,7 @@ dependencies = [ "servo_config", "sparkle", "style", + "style_traits", "surfman", "surfman-chains", "surfman-chains-api", @@ -5466,7 +5467,6 @@ dependencies = [ "encoding_rs", "euclid", "fallible", - "font-kit", "fxhash", "hashglobe", "html5ever", diff --git a/components/canvas/Cargo.toml b/components/canvas/Cargo.toml index f0374c3df90..782e9fba4f0 100644 --- a/components/canvas/Cargo.toml +++ b/components/canvas/Cargo.toml @@ -37,6 +37,7 @@ servo_arc = { path = "../servo_arc" } servo_config = { path = "../config" } sparkle = "0.1.25" style = { path = "../style" } +style_traits = { path = "../style_traits" } # NOTE: the sm-angle feature only enables ANGLE on Windows, not other platforms! surfman = { version = "0.2", features = ["sm-angle", "sm-angle-default"] } surfman-chains = "0.3" diff --git a/components/canvas/canvas_data.rs b/components/canvas/canvas_data.rs index 402c2690257..027c6a3155c 100644 --- a/components/canvas/canvas_data.rs +++ b/components/canvas/canvas_data.rs @@ -11,7 +11,7 @@ use euclid::{point2, vec2}; use font_kit::family_name::FamilyName; use font_kit::font::Font; use font_kit::metrics::Metrics; -use font_kit::properties::Properties; +use font_kit::properties::{Properties, Weight, Stretch, Style}; use font_kit::source::SystemSource; use gfx::font::FontHandleMethods; use gfx::font_cache_thread::FontCacheThread; @@ -25,6 +25,8 @@ use std::marker::PhantomData; use std::mem; use std::sync::{Arc, Mutex}; use style::properties::style_structs::Font as FontStyleStruct; +use style::values::computed::font; +use style_traits::values::ToCss; use webrender_api::units::RectExt as RectExt_; /// The canvas data stores a state machine for the current status of @@ -1372,6 +1374,24 @@ impl RectExt for Rect<u32> { } } +fn to_font_kit_family(font_family: &font::SingleFontFamily) -> FamilyName { + match font_family { + font::SingleFontFamily::FamilyName(family_name) => { + FamilyName::Title(family_name.to_css_string()) + }, + font::SingleFontFamily::Generic(generic) => match generic { + font::GenericFontFamily::Serif => FamilyName::Serif, + font::GenericFontFamily::SansSerif => FamilyName::SansSerif, + font::GenericFontFamily::Monospace => FamilyName::Monospace, + font::GenericFontFamily::Fantasy => FamilyName::Fantasy, + font::GenericFontFamily::Cursive => FamilyName::Cursive, + font::GenericFontFamily::None => { + unreachable!("Shouldn't appear in computed values") + }, + }, + } +} + fn load_system_font_from_style(font_style: Option<&FontStyleStruct>) -> Font { let mut properties = Properties::new(); let style = match font_style { @@ -1382,12 +1402,19 @@ fn load_system_font_from_style(font_style: Option<&FontStyleStruct>) -> Font { .font_family .families .iter() - .map(|family_name| family_name.into()) - .collect::<Vec<FamilyName>>(); + .map(to_font_kit_family) + .collect::<Vec<_>>(); let properties = properties - .style(style.font_style.into()) - .weight(style.font_weight.into()) - .stretch(style.font_stretch.into()); + .style(match style.font_style { + font::FontStyle::Normal => Style::Normal, + font::FontStyle::Italic => Style::Italic, + font::FontStyle::Oblique(..) => { + // TODO: support oblique angle. + Style::Oblique + } + }) + .weight(Weight(style.font_weight.0)) + .stretch(Stretch(style.font_stretch.value())); let font_handle = match SystemSource::new().select_best_match(&family_names, &properties) { Ok(handle) => handle, Err(e) => { diff --git a/components/style/Cargo.toml b/components/style/Cargo.toml index 4baf6d381ef..91e26f7c06e 100644 --- a/components/style/Cargo.toml +++ b/components/style/Cargo.toml @@ -40,7 +40,6 @@ derive_more = "0.99" encoding_rs = { version = "0.8", optional = true } euclid = "0.20" fallible = { path = "../fallible" } -font-kit = "0.7" fxhash = "0.2" hashglobe = { path = "../hashglobe" } html5ever = { version = "0.25", optional = true } diff --git a/components/style/lib.rs b/components/style/lib.rs index 7ff69ed3c7b..52b77a7507e 100644 --- a/components/style/lib.rs +++ b/components/style/lib.rs @@ -40,8 +40,6 @@ extern crate debug_unreachable; extern crate derive_more; extern crate euclid; extern crate fallible; -#[cfg(feature = "servo")] -extern crate font_kit; extern crate fxhash; #[cfg(feature = "gecko")] #[macro_use] diff --git a/components/style/values/computed/font.rs b/components/style/values/computed/font.rs index 336408fb87a..b8d2cb4c680 100644 --- a/components/style/values/computed/font.rs +++ b/components/style/values/computed/font.rs @@ -22,12 +22,6 @@ use crate::values::specified::length::{FontBaseSize, NoCalcLength}; use crate::values::CSSFloat; use crate::Atom; use cssparser::{serialize_identifier, CssStringWriter, Parser}; -#[cfg(feature = "servo")] -use font_kit::family_name::FamilyName as FontKitFamilyName; -#[cfg(feature = "servo")] -use font_kit::properties::{ - Stretch as FontKitFontStretch, Style as FontKitFontStyle, Weight as FontKitFontWeight, -}; #[cfg(feature = "gecko")] use malloc_size_of::{MallocSizeOf, MallocSizeOfOps}; use std::fmt::{self, Write}; @@ -75,13 +69,6 @@ impl ToAnimatedValue for FontWeight { } } -#[cfg(feature = "servo")] -impl From<FontWeight> for FontKitFontWeight { - fn from(font_weight: FontWeight) -> Self { - FontKitFontWeight(font_weight.0) - } -} - #[derive( Animate, Clone, @@ -458,26 +445,6 @@ impl SingleFontFamily { } #[cfg(feature = "servo")] -impl From<&SingleFontFamily> for FontKitFamilyName { - fn from(font_family: &SingleFontFamily) -> Self { - match font_family { - SingleFontFamily::FamilyName(family_name) => { - FontKitFamilyName::Title(family_name.to_css_string()) - }, - SingleFontFamily::Generic(GenericFontFamily::Serif) => FontKitFamilyName::Serif, - SingleFontFamily::Generic(GenericFontFamily::SansSerif) => FontKitFamilyName::SansSerif, - SingleFontFamily::Generic(GenericFontFamily::Monospace) => FontKitFamilyName::Monospace, - SingleFontFamily::Generic(GenericFontFamily::Fantasy) => FontKitFamilyName::Fantasy, - SingleFontFamily::Generic(GenericFontFamily::Cursive) => FontKitFamilyName::Cursive, - SingleFontFamily::Generic(family_name) => { - warn!("unsupported font family name: {:?}", family_name); - FontKitFamilyName::SansSerif - }, - } - } -} - -#[cfg(feature = "servo")] #[derive( Clone, Debug, @@ -975,17 +942,6 @@ impl ToCss for FontStyle { } } -#[cfg(feature = "servo")] -impl From<FontStyle> for FontKitFontStyle { - fn from(font_style: FontStyle) -> Self { - match font_style { - FontStyle::Normal => FontKitFontStyle::Normal, - FontStyle::Italic => FontKitFontStyle::Italic, - FontStyle::Oblique(_) => FontKitFontStyle::Oblique, - } - } -} - /// A value for the font-stretch property per: /// /// https://drafts.csswg.org/css-fonts-4/#propdef-font-stretch @@ -1008,13 +964,6 @@ impl FontStretch { } } -#[cfg(feature = "servo")] -impl From<FontStretch> for FontKitFontStretch { - fn from(stretch: FontStretch) -> Self { - FontKitFontStretch(stretch.value()) - } -} - impl ToAnimatedValue for FontStretch { type AnimatedValue = Percentage; |