struct Evaluator<'a, S> {Show 16 fields
context: &'a dyn CharstringContext,
is_type1: bool,
blend_state: Option<BlendState<'a>>,
sink: &'a mut S,
is_open: bool,
is_flexing: bool,
seen_width_command: bool,
have_read_width: bool,
stem_count: usize,
x: Fixed,
y: Fixed,
sbx: Fixed,
wx: Fixed,
stack: Stack,
stack_ix: usize,
in_seac: bool,
}Expand description
Transient state for evaluating a charstring and handling recursive subroutine calls.
Fields§
§context: &'a dyn CharstringContext§is_type1: bool§blend_state: Option<BlendState<'a>>§sink: &'a mut S§is_open: bool§is_flexing: boolWhen the flex state is active, moveto commands simply accumulate vectors on the stack which will be used to emit curves when the flex is finalized
seen_width_command: boolTrue if we’ve seen a command that might read width
have_read_width: boolTrue if we’ve actually read a width
stem_count: usize§x: Fixed§y: Fixed§sbx: FixedX side-bearing
wx: FixedX width
stack: Stack§stack_ix: usize§in_seac: boolImplementations§
Source§impl<'a, S> Evaluator<'a, S>where
S: CommandSink,
impl<'a, S> Evaluator<'a, S>where
S: CommandSink,
fn new( context: &'a dyn CharstringContext, blend_state: Option<BlendState<'a>>, sink: &'a mut S, ) -> Self
fn evaluate(&mut self, charstring_data: &[u8]) -> Result<(), Error>
fn evaluate_impl( &mut self, charstring_data: &[u8], nesting_depth: u32, ) -> Result<bool, Error>
Sourcefn evaluate_operator(
&mut self,
operator: Operator,
cursor: &mut Cursor<'_>,
nesting_depth: u32,
) -> Result<bool, Error>
fn evaluate_operator( &mut self, operator: Operator, cursor: &mut Cursor<'_>, nesting_depth: u32, ) -> Result<bool, Error>
Evaluates a single charstring operator.
Returns Ok(true) if evaluation should continue.
fn read_width(&mut self) -> Result<(), Error>
Sourcefn handle_seac(
&mut self,
mode: SeacMode,
nesting_depth: u32,
) -> Result<(), Error>
fn handle_seac( &mut self, mode: SeacMode, nesting_depth: u32, ) -> Result<(), Error>
See endchar in Appendix C at https://adobe-type-tools.github.io/font-tech-notes/pdfs/5177.Type2.pdf#page=35
Sourcefn handle_flex(&mut self) -> Result<(), Error>
fn handle_flex(&mut self) -> Result<(), Error>
Emit two curves for the accumulated flex vectors.
Sourcefn handle_mm_blend(
&mut self,
subr_idx: i32,
num_args: usize,
) -> Result<(), Error>
fn handle_mm_blend( &mut self, subr_idx: i32, num_args: usize, ) -> Result<(), Error>
Handle point blending for multiple master fonts.
fn coords_remaining(&self) -> usize
fn ensure_open(&mut self)
fn emit_line(&mut self, x: Fixed, y: Fixed)
fn emit_curves<const N: usize>( &mut self, modes: [PointMode; N], ) -> Result<(), Error>
fn reset_stack(&mut self)
Auto Trait Implementations§
impl<'a, S> Freeze for Evaluator<'a, S>
impl<'a, S> !RefUnwindSafe for Evaluator<'a, S>
impl<'a, S> !Send for Evaluator<'a, S>
impl<'a, S> !Sync for Evaluator<'a, S>
impl<'a, S> Unpin for Evaluator<'a, S>
impl<'a, S> UnsafeUnpin for Evaluator<'a, S>
impl<'a, S> !UnwindSafe for Evaluator<'a, S>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more