This runbook covers TODOS.phase-72.72.13.1.14: readable font selection with a
dyslexia-friendly option and adjustable letter spacing.
Runtime Surface#
The font accessibility options live in V2UI:
- C++ header:
V2/ue/Source/V2UI/Public/V2FontAccessibilityOptions.h - C++ source:
V2/ue/Source/V2UI/Private/V2FontAccessibilityOptions.cpp - automation spec:
V2/ue/Source/V2Tests/Private/UI/FontAccessibilityOptions.spec.cpp - contract:
V2/ue/Content/V2/UI/Accessibility/FontAccessibilityOptions_V2_Contract.json - focused checker:
V2/ue/Tools/check-v2-font-accessibility-options.py
FV2FontAccessibilityOptions::BuildDefaultProfile returns
Accessibility.FontAccessibilityOptions.V2 for
Settings.Accessibility.FontOptions. The profile exposes
Settings.Accessibility.ReadableFont with Default, Atkinson Hyperlegible, and
OpenDyslexic choices, plus Settings.Accessibility.LetterSpacing from 0 to 50
percent in 5 percent steps.
Required Surfaces#
The profile must resolve readable font and letter-spacing styles for:
UI.Text.HUDUI.Text.MenusUI.Text.DialogueUI.Text.SubtitlesUI.Text.QuestTrackerUI.Text.NotificationsUI.Text.Buttons
Each resolved style preserves localization fallback chains, requires layout reflow, preserves button hit targets, and prevents text overlap.
Release Policy#
Font accessibility options are valid only when they:
- include Default, Atkinson Hyperlegible, and OpenDyslexic font modes;
- mark OpenDyslexic as the dyslexia-friendly font option;
- preserve script-aware localization fallback behavior for every font choice;
- expose letter spacing from 0 to 50 percent in 5 percent steps;
- map maximum spacing to 0.12em;
- apply to HUD, menus, dialogue, subtitles, quest text, notifications, and buttons;
- remain saved per player profile and frame-data inert.
Verification#
Run these checks after changing font accessibility options:
python3 V2/ue/Tools/check-v2-font-accessibility-options.py
python3 V2/ue/Tools/check-v2-settings-ui.py
python3 V2/ue/Tools/check-v2-accessibility-feature-set.py
python3 V2/ue/Tools/check-v2-ui-module.py
python3 V2/ue/Tools/check-v2-ci-workflow.py
python3 V2/tools/validate-v2-docs.py
python3 -m py_compile V2/ue/Tools/check-v2-font-accessibility-options.py V2/ue/Tools/check-v2-settings-ui.py V2/ue/Tools/check-v2-ci-workflow.py
python3 -m json.tool V2/ue/Content/V2/UI/Accessibility/FontAccessibilityOptions_V2_Contract.json
python3 -m json.tool V2/ue/Content/V2/UI/Settings/SettingsScreen_V2_Contract.json
Automation test name:
V2.UI.Accessibility.FontAccessibilityOptions.AssetContract.
Horde Gates#
font-accessibility-options-sourcefont-accessibility-options-readable-fontsfont-accessibility-options-dyslexia-fontfont-accessibility-options-letter-spacingfont-accessibility-options-settings-rowfont-accessibility-options-automationfont-accessibility-options-ci-wired