# V2 Text Scaling

This runbook covers `TODOS.phase-72.72.13.1.5`: the V2UI text scaling system
that provides a global UI text size multiplier from 0.5x to 3.0x while
respecting layout constraints.

## Runtime Surface

The text scaling system lives in V2UI:

- C++ header: `V2/ue/Source/V2UI/Public/V2TextScaling.h`
- C++ source: `V2/ue/Source/V2UI/Private/V2TextScaling.cpp`
- automation spec: `V2/ue/Source/V2Tests/Private/UI/TextScaling.spec.cpp`
- contract: `V2/ue/Content/V2/UI/Accessibility/TextScaling_V2_Contract.json`
- focused checker: `V2/ue/Tools/check-v2-text-scaling.py`

`FV2TextScaling::BuildDefaultSettings` returns `Accessibility.TextScaling.V2`, a
global text scaling profile with supported multipliers of 0.5x, 0.75x, 1.0x,
1.25x, 1.5x, 2.0x, 2.5x, and 3.0x. `FV2UIAccessibilitySettings::TextScale` also
accepts the 0.5x-3.0x range.

## Required Surfaces

The profile must include layout rules for:

- `UI.Text.HUD`
- `UI.Text.Menus`
- `UI.Text.Dialogue`
- `UI.Text.Subtitles`
- `UI.Text.QuestTracker`
- `UI.Text.Notifications`
- `UI.Text.Buttons`

Each `FV2TextScalingLayoutRule` provides surface-specific minimum readable font
size, minimum container width, maximum line length, wrapping, responsive layout,
hit-target preservation, overlap prevention, and safe-zone behavior.

## Release Policy

Text scaling is valid only when it:

- exposes one global UI text size multiplier;
- clamps scale to 0.5x through 3.0x;
- reflows containers at scaled sizes;
- wraps text at large scales;
- preserves button hit targets;
- prevents text overlap;
- respects HUD safe zones and constrained layouts.

## Verification

Run these checks after changing text scaling:

```bash
python3 V2/ue/Tools/check-v2-text-scaling.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-text-scaling.py V2/ue/Tools/check-v2-ci-workflow.py
python3 -m json.tool V2/ue/Content/V2/UI/Accessibility/TextScaling_V2_Contract.json
```

Automation test name: `V2.UI.Accessibility.TextScaling.AssetContract`.

## Horde Gates

- `text-scaling-source`
- `text-scaling-global-multiplier`
- `text-scaling-scale-range`
- `text-scaling-layout-constraints`
- `text-scaling-automation`
- `text-scaling-ci-wired`
