summaryrefslogtreecommitdiff
path: root/src/env.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/env.rs')
-rw-r--r--src/env.rs41
1 files changed, 3 insertions, 38 deletions
diff --git a/src/env.rs b/src/env.rs
index 75e2853a..10230bbf 100644
--- a/src/env.rs
+++ b/src/env.rs
@@ -7,14 +7,15 @@ use std::fs;
use std::io::Cursor;
use std::path::{Path, PathBuf};
-use fontdock::{FaceFromVec, FaceId, FontSource};
+use fontdock::{FaceId, FontSource};
use image::io::Reader as ImageReader;
use image::{DynamicImage, GenericImageView, ImageFormat};
-use ttf_parser::Face;
#[cfg(feature = "fs")]
use fontdock::{FsIndex, FsSource};
+use crate::font::FaceBuf;
+
/// Encapsulates all environment dependencies (fonts, resources).
#[derive(Debug)]
pub struct Env {
@@ -47,42 +48,6 @@ impl Env {
/// A font loader that is backed by a dynamic source.
pub type FontLoader = fontdock::FontLoader<Box<dyn FontSource<Face = FaceBuf>>>;
-/// An owned font face.
-pub struct FaceBuf {
- data: Box<[u8]>,
- face: Face<'static>,
-}
-
-impl FaceBuf {
- /// Get a reference to the underlying face.
- pub fn get(&self) -> &Face<'_> {
- // We can't implement Deref because that would leak the internal 'static
- // lifetime.
- &self.face
- }
-
- /// The raw face data.
- pub fn data(&self) -> &[u8] {
- &self.data
- }
-}
-
-impl FaceFromVec for FaceBuf {
- fn from_vec(vec: Vec<u8>, i: u32) -> Option<Self> {
- let data = vec.into_boxed_slice();
-
- // SAFETY: The slices's location is stable in memory since we don't
- // touch it and it can't be touched from outside this type.
- let slice: &'static [u8] =
- unsafe { std::slice::from_raw_parts(data.as_ptr(), data.len()) };
-
- Some(Self {
- data,
- face: Face::from_slice(slice, i).ok()?,
- })
- }
-}
-
/// Simplify font loader construction from an [`FsIndex`].
#[cfg(feature = "fs")]
pub trait FsIndexExt {