releases/docs/ACCESSIBILITY.md

40 lines
2.7 KiB
Markdown

# 접근성 지원 범위 (UC-A01~A20)
작성: 2026-08-17. UI 복잡 버전(docs/UI_USECASES.md §G) GREEN 구현과 함께 정의한
접근성 지원 선언 문서. 무엇을 지원하고 어떻게 검증하는지 적는다.
## 지원 범위
| 영역 | 지원 내용 | 구현 위치 |
|---|---|---|
| 화면 낭독기(UIA) | 주요 컨트롤 30여 개에 `AutomationProperties.Name`/`HelpText` 부여 | `MainWindow.xaml` 툴바·카드·팝업 |
| 라이브 영역 | 상태바 텍스트·다운로드 상태·대기 현황 `LiveSetting="Polite"`, 오류는 `Assertive` | 상태바, 카드 템플릿 |
| 커스텀 자동화 피어 | `MainWindowAutomationPeer` 로 창 이름 노출 | `MainWindow.xaml.cs` |
| 키보드 | Tab 이동(`TabIndex` 지정), 포커스 링(`FocusVisual` 공용 스타일), Esc 팝업 일괄 닫기 | `Shared.xaml`, `MainWindow` |
| 접근 키 | `AccessText`(이동(_G)) 등 Alt 접근 키 | 툴바 이동 버튼 |
| 툴팁 | `ToolTipService` 표시 지연/지속 설정 + 그림자 | `MainWindow`(Window 속성), `Shared.xaml` |
| 고대비 | `Themes/HighContrast.xaml` + OS 고대비 자동 감지(`SystemParameters.HighContrast`, `UserPreferenceChanged`) | `App.xaml.cs`, `MainWindow` |
| 색 무의존 상태 | 완료 ✓ 아이콘(`SuccessIcon`), 미디어 종류 배지 텍스트 | 카드 템플릿 |
| 저시력 | 글자 확대 배율 최대 200%(`AppConfig.UiFontScale`), UI 배율(`UiScale`) | 설정 > 외관/접근성 |
| 동작 민감 | 애니메이션 감소(`ReduceMotion` → Duration 토큰 0화) | 설정 > 접근성 |
| 자막 | 영상 자막 표시 옵션(`ShowCaptions`) | 설정 > 접근성 |
| 콘텐츠 언어 | 리더 모드 HTML `lang="ko"` 선언 | `ReaderMode.cs` |
| 명도 대비 | WCAG AA 텍스트 4.5:1, 비텍스트 3:1 — 자동 검증 | 테스트 `UiUsecaseAccessibilityRedTests`, `UiUsecaseThemeRedTests` |
## 대비 기준과 검증
- 텍스트(본문·보조·강조): 다크·라이트 모두 **4.5:1 이상** (UC-T14~T18)
- 진행 트랙·버튼 테두리 등 비텍스트 구성요소: **3:1 이상** (UC-A19~A20)
- 대비율은 WCAG 2.x 상대 휘도식으로 테스트에서 실제 색값(`#RRGGBB`)을 파싱해 계산한다.
테마 색을 바꿀 때마다 자동으로 재검증된다.
## 팝업 키보드 탐색
모든 플라이아웃(즐겨찾기·기록·다운로드·라이브러리·아카이브·단축키 도움말)에
`KeyboardNavigation.TabNavigation="Cycle"` 를 적용해 팝업 안에서 포커스가 순환하며,
Esc 한 번으로 열린 모든 팝업이 닫힌다(`CloseAllPopups`).
## 제약(현재 미지원)
- 완전한 UI 언어 전환(한/영)은 설정값 저장 + 일부 텍스트 적용 수준이다.
- 터치 스크린 전용 제스처(스와이프 등)는 지원하지 않는다.