Ferry provides full support for Unicode text, i.e.
font substitution,
bidirectional text reordering,
non trivial codepoint-to-glyph mapping and other features for proper handling of complex text data are all implemented.
Syntax highlighting is implemented as editor extensions. There are two such extensions so far:
See
fe::ISubstringDecorator.
Normally Ferry operates on well formed UTF8-encoded text. But it is safe to feed editing component with any input: mallformed UTF8-encoded text or even binary data - Ferry safely handles it.
See
fe::ITextScalerFactory.
Height of every text line is calculated individually based on fonts applied to different fragments of text line. Though it is possible to force editor make all text lines have the same height. See
fe::IDecorator::isFixedLineHeight().
Editor can be configured to enable automatic word wrap at arbitrary boundary. See
fe::EditorFacadePolicy::textLineMaxWidth.
Editor can be configured to disable interactive text editing with mouse and keyboard. See
fe::EditorFacadePolicy::textReadonly.
Sequential text editing acions can be grouped together so that to record them with a single entry in Undo/Redo stack. See
fe::IEditorFacade::openActionGroup() and
fe::IEditorFacade::closeActionGroup().