diff --git a/src/lib.rs b/src/lib.rs index fdd962c0..04a3b7db 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -41,7 +41,8 @@ pub use crate::buffer::{ }; pub use crate::common::{script, Direction, Feature, Language, Script, Variation}; pub use crate::face::Face; -pub use crate::shape::shape; +pub use crate::plan::ShapePlan; +pub use crate::shape::{shape, shape_with_plan}; type Mask = u32; diff --git a/src/plan.rs b/src/plan.rs index add1e19b..a1fd999f 100644 --- a/src/plan.rs +++ b/src/plan.rs @@ -1,44 +1,50 @@ use alloc::boxed::Box; +use alloc::vec::Vec; use core::any::Any; use crate::complex::{complex_categorize, ComplexShaper, DEFAULT_SHAPER, DUMBER_SHAPER}; use crate::ot::{self, feature, FeatureFlags, TableIndex}; use crate::{aat, Direction, Face, Feature, Language, Mask, Script, Tag}; +/// A reusable plan for shaping a text buffer. pub struct ShapePlan { - pub direction: Direction, - pub script: Option