1#![deny(unsafe_code)]
6
7mod font_descriptor;
8mod font_identifier;
9mod font_template;
10mod system_font_service_proxy;
11
12use std::sync::Arc;
13
14pub use font_descriptor::*;
15pub use font_identifier::*;
16pub use font_template::*;
17use ipc_channel::ipc::IpcSharedMemory;
18use malloc_size_of_derive::MallocSizeOf;
19use range::{RangeIndex, int_range_index};
20use serde::{Deserialize, Serialize};
21pub use system_font_service_proxy::*;
22
23int_range_index! {
24 #[derive(Deserialize, MallocSizeOf, Serialize)]
25 struct ByteIndex(isize)
28}
29
30pub type StylesheetWebFontLoadFinishedCallback = Arc<dyn Fn(bool) + Send + Sync + 'static>;
31
32#[derive(Clone, Deserialize, MallocSizeOf, Serialize)]
36pub struct FontData(#[conditional_malloc_size_of] pub(crate) Arc<IpcSharedMemory>);
37
38impl FontData {
39 pub fn from_bytes(bytes: &[u8]) -> Self {
40 Self(Arc::new(IpcSharedMemory::from_bytes(bytes)))
41 }
42
43 pub fn as_ipc_shared_memory(&self) -> Arc<IpcSharedMemory> {
44 self.0.clone()
45 }
46}
47
48impl AsRef<[u8]> for FontData {
49 fn as_ref(&self) -> &[u8] {
50 &self.0
51 }
52}
53
54#[derive(Deserialize, Clone, Serialize)]
59pub struct FontDataAndIndex {
60 pub data: FontData,
62 pub index: u32,
64}
65
66#[derive(Copy, Clone, PartialEq)]
67pub enum FontDataError {
68 FailedToLoad,
69}