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:
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.
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()