From e0c4f1a08e756f11c30a99cd739fe78267e5040b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Tue, 19 May 2020 20:20:51 +0200 Subject: [PATCH] Move `font::Source` to `iced_graphics` --- glow/Cargo.toml | 2 +- glow/src/text.rs | 4 +- graphics/Cargo.toml | 5 +++ graphics/src/font.rs | 10 +++++ .../font.rs => graphics/src/font/source.rs | 4 +- graphics/src/lib.rs | 1 + wgpu/Cargo.toml | 2 +- wgpu/src/text.rs | 4 +- wgpu/src/text/font.rs | 37 ------------------- 9 files changed, 21 insertions(+), 48 deletions(-) create mode 100644 graphics/src/font.rs rename glow/src/text/font.rs => graphics/src/font/source.rs (90%) delete mode 100644 wgpu/src/text/font.rs diff --git a/glow/Cargo.toml b/glow/Cargo.toml index 212fbb30..158e2bf0 100644 --- a/glow/Cargo.toml +++ b/glow/Cargo.toml @@ -13,7 +13,6 @@ euclid = "0.20" glow = "0.4" bytemuck = "1.2" glam = "0.8" -font-kit = "0.6" log = "0.4" glyph_brush = "0.6" @@ -24,6 +23,7 @@ path = "../native" [dependencies.iced_graphics] version = "0.1" path = "../graphics" +features = ["font-source"] [dependencies.surfman] path = "../../surfman/surfman" diff --git a/glow/src/text.rs b/glow/src/text.rs index 159c80a6..be88ceaf 100644 --- a/glow/src/text.rs +++ b/glow/src/text.rs @@ -1,7 +1,5 @@ -mod font; - use crate::Transformation; - +use iced_graphics::font; use std::{cell::RefCell, collections::HashMap}; pub const BUILTIN_ICONS: iced_native::Font = iced_native::Font::External { diff --git a/graphics/Cargo.toml b/graphics/Cargo.toml index a81807d6..c937763c 100644 --- a/graphics/Cargo.toml +++ b/graphics/Cargo.toml @@ -6,6 +6,7 @@ edition = "2018" [features] canvas = ["lyon"] +font-source = ["font-kit"] [dependencies] bytemuck = "1.2" @@ -22,3 +23,7 @@ path = "../style" [dependencies.lyon] version = "0.15" optional = true + +[dependencies.font-kit] +version = "0.6" +optional = true diff --git a/graphics/src/font.rs b/graphics/src/font.rs new file mode 100644 index 00000000..3890beba --- /dev/null +++ b/graphics/src/font.rs @@ -0,0 +1,10 @@ +#[cfg(feature = "font-source")] +mod source; + +#[cfg(feature = "font-source")] +pub use source::Source; + +#[cfg(feature = "font-source")] +pub use font_kit::{ + error::SelectionError as LoadError, family_name::FamilyName as Family, +}; diff --git a/glow/src/text/font.rs b/graphics/src/font/source.rs similarity index 90% rename from glow/src/text/font.rs rename to graphics/src/font/source.rs index 7346ccdb..6855aa93 100644 --- a/glow/src/text/font.rs +++ b/graphics/src/font/source.rs @@ -1,6 +1,4 @@ -pub use font_kit::{ - error::SelectionError as LoadError, family_name::FamilyName as Family, -}; +use crate::font::{Family, LoadError}; pub struct Source { raw: font_kit::source::SystemSource, diff --git a/graphics/src/lib.rs b/graphics/src/lib.rs index bdaefb41..152dc7b0 100644 --- a/graphics/src/lib.rs +++ b/graphics/src/lib.rs @@ -6,6 +6,7 @@ mod viewport; mod widget; pub mod backend; +pub mod font; pub mod triangle; #[doc(no_inline)] diff --git a/wgpu/Cargo.toml b/wgpu/Cargo.toml index 88290576..b59c7fa3 100644 --- a/wgpu/Cargo.toml +++ b/wgpu/Cargo.toml @@ -19,7 +19,6 @@ bytemuck = "1.2" glyph_brush = "0.6" raw-window-handle = "0.3" glam = "0.8" -font-kit = "0.6" log = "0.4" guillotiere = "0.5" # Pin `gfx-memory` until https://github.com/gfx-rs/wgpu-rs/issues/261 is @@ -33,6 +32,7 @@ path = "../native" [dependencies.iced_graphics] version = "0.1" path = "../graphics" +features = ["font-source"] [dependencies.image] version = "0.23" diff --git a/wgpu/src/text.rs b/wgpu/src/text.rs index 8bcd6d83..ae9b6b22 100644 --- a/wgpu/src/text.rs +++ b/wgpu/src/text.rs @@ -1,7 +1,5 @@ -mod font; - use crate::Transformation; - +use iced_graphics::font; use std::{cell::RefCell, collections::HashMap}; pub const BUILTIN_ICONS: iced_native::Font = iced_native::Font::External { diff --git a/wgpu/src/text/font.rs b/wgpu/src/text/font.rs deleted file mode 100644 index 7346ccdb..00000000 --- a/wgpu/src/text/font.rs +++ /dev/null @@ -1,37 +0,0 @@ -pub use font_kit::{ - error::SelectionError as LoadError, family_name::FamilyName as Family, -}; - -pub struct Source { - raw: font_kit::source::SystemSource, -} - -impl Source { - pub fn new() -> Self { - Source { - raw: font_kit::source::SystemSource::new(), - } - } - - pub fn load(&self, families: &[Family]) -> Result, LoadError> { - let font = self.raw.select_best_match( - families, - &font_kit::properties::Properties::default(), - )?; - - match font { - font_kit::handle::Handle::Path { path, .. } => { - use std::io::Read; - - let mut buf = Vec::new(); - let mut reader = std::fs::File::open(path).expect("Read font"); - let _ = reader.read_to_end(&mut buf); - - Ok(buf) - } - font_kit::handle::Handle::Memory { bytes, .. } => { - Ok(bytes.as_ref().clone()) - } - } - } -}