mirror of
https://github.com/wez/wezterm.git
synced 2024-11-23 15:04:36 +03:00
fonts: FontDataSource::Memory -> BuiltIn
This makes it harder to accidentally copy the associated data.
This commit is contained in:
parent
f9bdd2502a
commit
3ce44823a0
@ -6,7 +6,6 @@ use anyhow::{anyhow, Context};
|
||||
use config::{configuration, FreeTypeLoadTarget};
|
||||
pub use freetype::*;
|
||||
use rangeset::RangeSet;
|
||||
use std::borrow::Cow;
|
||||
use std::convert::TryInto;
|
||||
use std::ffi::CStr;
|
||||
use std::ptr;
|
||||
@ -496,8 +495,11 @@ impl Library {
|
||||
pub fn query_num_faces(&self, source: &FontDataSource) -> anyhow::Result<u32> {
|
||||
let face = match source {
|
||||
FontDataSource::OnDisk(path) => self.new_face(path, -1).context("query_num_faces")?,
|
||||
FontDataSource::BuiltIn { data, .. } => self
|
||||
.new_face_from_slice(data, -1)
|
||||
.context("query_num_faces")?,
|
||||
FontDataSource::Memory { data, .. } => self
|
||||
.new_face_from_slice(&data, -1)
|
||||
.new_face_from_slice(&*data, -1)
|
||||
.context("query_num_faces")?,
|
||||
};
|
||||
let num_faces = unsafe { (*face).num_faces }.try_into();
|
||||
@ -519,6 +521,7 @@ impl Library {
|
||||
|
||||
let face = match &source.source {
|
||||
FontDataSource::OnDisk(path) => self.new_face(path.to_str().unwrap(), index as _),
|
||||
FontDataSource::BuiltIn { data, .. } => self.new_face_from_slice(&data, index as _),
|
||||
FontDataSource::Memory { data, .. } => self.new_face_from_slice(&data, index as _),
|
||||
}
|
||||
.with_context(|| format!("face_from_locator({:?})", handle))?;
|
||||
@ -563,11 +566,7 @@ impl Library {
|
||||
);
|
||||
}
|
||||
|
||||
fn new_face_from_slice(
|
||||
&self,
|
||||
data: &Cow<'static, [u8]>,
|
||||
face_index: FT_Long,
|
||||
) -> anyhow::Result<FT_Face> {
|
||||
fn new_face_from_slice(&self, data: &[u8], face_index: FT_Long) -> anyhow::Result<FT_Face> {
|
||||
let mut face = ptr::null_mut();
|
||||
|
||||
let res = unsafe {
|
||||
|
@ -14,9 +14,13 @@ pub mod gdi;
|
||||
#[derive(Clone)]
|
||||
pub enum FontDataSource {
|
||||
OnDisk(PathBuf),
|
||||
BuiltIn {
|
||||
name: &'static str,
|
||||
data: &'static [u8],
|
||||
},
|
||||
Memory {
|
||||
name: String,
|
||||
data: Cow<'static, [u8]>,
|
||||
data: Arc<[u8]>,
|
||||
},
|
||||
}
|
||||
|
||||
@ -24,6 +28,7 @@ impl FontDataSource {
|
||||
pub fn name_or_path_str(&self) -> Cow<str> {
|
||||
match self {
|
||||
Self::OnDisk(path) => path.to_string_lossy(),
|
||||
Self::BuiltIn { name, .. } => Cow::Borrowed(name),
|
||||
Self::Memory { name, .. } => Cow::Borrowed(name),
|
||||
}
|
||||
}
|
||||
@ -34,7 +39,8 @@ impl FontDataSource {
|
||||
let data = std::fs::read(path)?;
|
||||
Ok(Cow::Owned(data))
|
||||
}
|
||||
Self::Memory { data, .. } => Ok(data.clone()),
|
||||
Self::BuiltIn { data, .. } => Ok(Cow::Borrowed(data)),
|
||||
Self::Memory { data, .. } => Ok(Cow::Borrowed(&*data)),
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -48,6 +54,9 @@ impl PartialEq for FontDataSource {
|
||||
(Self::Memory { name: name_a, .. }, Self::Memory { name: name_b, .. }) => {
|
||||
name_a == name_b
|
||||
}
|
||||
(Self::BuiltIn { name: name_a, .. }, Self::BuiltIn { name: name_b, .. }) => {
|
||||
name_a == name_b
|
||||
}
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
@ -71,6 +80,7 @@ impl std::fmt::Debug for FontDataSource {
|
||||
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> {
|
||||
match self {
|
||||
Self::OnDisk(path) => fmt.debug_struct("OnDisk").field("path", &path).finish(),
|
||||
Self::BuiltIn { name, .. } => fmt.debug_struct("BuiltIn").field("name", &name).finish(),
|
||||
Self::Memory { data, name } => fmt
|
||||
.debug_struct("Memory")
|
||||
.field("name", &name)
|
||||
|
@ -2,7 +2,6 @@ use crate::locator::{FontDataHandle, FontDataSource};
|
||||
use crate::shaper::GlyphInfo;
|
||||
use config::FontAttributes;
|
||||
pub use config::{FontStretch, FontWeight};
|
||||
use std::borrow::Cow;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum MaybeShaped {
|
||||
@ -278,10 +277,7 @@ pub(crate) fn load_built_in_fonts(font_info: &mut Vec<ParsedFont>) -> anyhow::Re
|
||||
font!("../../assets/fonts/LastResortHE-Regular.ttf"),
|
||||
] {
|
||||
let locator = FontDataHandle {
|
||||
source: FontDataSource::Memory {
|
||||
data: Cow::Borrowed(data),
|
||||
name: name.to_string(),
|
||||
},
|
||||
source: FontDataSource::BuiltIn { data, name },
|
||||
index: 0,
|
||||
variation: 0,
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user