#![deny(missing_docs, clippy::missing_docs_in_private_items)]
mod check;
mod checkresult;
pub mod codetesting;
pub mod constants;
mod context;
mod error;
mod filetype;
mod font;
mod gsub;
pub mod pens;
mod profile;
mod registry;
mod status;
mod testable;
mod utils;
pub use check::{return_result, Check, CheckFlags, CheckId, CheckImplementation, HotfixFunction};
pub use checkresult::{CheckResult, FixResult};
pub use context::Context;
pub use error::FontspectorError;
pub use filetype::{FileType, FileTypeConvert};
pub use font::{
get_name_entry_string, get_name_platform_tuples, PlatformSelector, TestFont, DEFAULT_LOCATION,
TTF,
};
pub use gsub::{GetSubstitutionMap, SubstitutionMap};
pub use profile::{Override, Profile, ProfileBuilder};
pub use registry::Registry;
pub use status::{CheckFnResult, Status, StatusCode, StatusList};
pub use testable::{Testable, TestableCollection, TestableType};
pub mod prelude {
pub use fontspector_checkhelper::check;
#[macro_export]
macro_rules! testfont {
($f: ident) => {
TTF.from_testable($f)
.ok_or(FontspectorError::InappropriateFile {
expected: "TTF",
filename: $f.filename.to_string_lossy().to_string(),
more_details: "Not a TTF file".to_string(),
})?
};
}
#[macro_export]
macro_rules! skip {
($code: expr, $message: expr) => {
return Ok(Status::just_one_skip($code, $message));
};
($condition: expr, $code: expr, $message: expr) => {
if $condition {
return Ok(Status::just_one_skip($code, $message));
}
};
}
pub type FixFnResult = Result<bool, FontspectorError>;
pub use crate::{
return_result, utils::*, Check, CheckFlags, CheckFnResult, CheckImplementation, Context,
FileType, FontspectorError, Profile, ProfileBuilder, Registry, Status, StatusList,
Testable, TestableCollection, TestableType, TTF,
};
}
pub trait Plugin {
fn register(&self, cr: &mut Registry) -> Result<(), String>;
}
#[cfg(not(target_family = "wasm"))]
pub unsafe fn load_plugin<Path: AsRef<std::path::Path>>(
path: Path,
) -> Result<pluginator::LoadedPlugin<dyn Plugin>, pluginator::plugin::LoadingError> {
unsafe { pluginator::plugin::load(path) }
}