MintedTextEditor is designed to be usable with assistive technologies across all supported platforms.
The editor exposes semantic accessibility information through the host platform's accessibility APIs:
- The editor canvas announces its role as a "text editor" to screen readers.
- The current text content and caret position are reported via
AccessibilityValueand assistive technology notifications. - Selection changes trigger accessibility announcements.
- Toolbar buttons have accessible labels and hints.
editor.AccessibilityHint = "Main document editor";Toolbar buttons use their Label property (set on IEditorCommand.Label) as the accessible name.
The editor is fully operable without a pointer:
| Category | Notes |
|---|---|
| Caret navigation | Arrow keys, Home, End, Page Up/Down |
| Selection | Shift + any navigation key |
| Word navigation | Ctrl/Cmd + Left/Right |
| Select word | Ctrl/Cmd + Shift + Left/Right |
| Start/end of line | Home / End |
| Start/end of document | Ctrl/Cmd + Home / Ctrl/Cmd + End |
| Editing | Standard keys for insert, delete, backspace |
| Formatting | Ctrl/Cmd + B/I/U, etc. |
| Toolbar focus | F6 to move focus to toolbar; Enter to activate |
MintedTextEditor ships with a built-in high contrast theme:
editor.Theme = EditorTheme.HighContrast;The high contrast theme:
- White text on black background
- Yellow selection highlight
- White caret
- All interactive elements have a visible focus ring
Right-to-left text is supported at the paragraph level:
// Set via ParagraphFormattingEngine
editor.ParagraphFormattingEngine.SetDirection(TextDirection.RightToLeft);
// Or set directly on a paragraph
para.Style = para.Style with { Direction = TextDirection.RightToLeft };The editor automatically mirrors paragraph layout and selection rendering for RTL paragraphs. Bidirectional (BIDI) text within a single paragraph is supported via the underlying SkiaSharp text shaping engine.
MintedTextEditor's toolbar labels and dialog strings are loaded from a resource dictionary and can be replaced with localized versions:
editor.StringProvider = new MyLocalizedStringProvider();Implement IEditorStringProvider:
public class MyLocalizedStringProvider : IEditorStringProvider
{
public string GetString(string key)
=> Resources.ResourceManager.GetString(key) ?? key;
}- TalkBack is supported via
AccessibilityNodeInfoon the editor canvas view. - Users can swipe to navigate by character and word.
- VoiceOver is supported via
UIAccessibility(iOS) and macOS Accessibility APIs. - The editor responds to VoiceOver focus and reads paragraph content.
- Narrator is supported via
AutomationPeeron the backingSKXamlCanvas. - High contrast detection via
AccessibilitySettings.HighContrastautomatically switches the theme.