# V2 Font Accessibility Options

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.HUD`
- `UI.Text.Menus`
- `UI.Text.Dialogue`
- `UI.Text.Subtitles`
- `UI.Text.QuestTracker`
- `UI.Text.Notifications`
- `UI.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:

```bash
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-source`
- `font-accessibility-options-readable-fonts`
- `font-accessibility-options-dyslexia-font`
- `font-accessibility-options-letter-spacing`
- `font-accessibility-options-settings-row`
- `font-accessibility-options-automation`
- `font-accessibility-options-ci-wired`
