SVG 접근성 API 매핑

W3C 작업 초안

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2026/WD-svg-aam-1.0-20260430/
최신 공개 버전:
https://www.w3.org/TR/svg-aam-1.0/
최신 편집자 초안:
https://w3c.github.io/svg-aam/
이력:
https://www.w3.org/standards/history/svg-aam-1.0/
커밋 이력
편집자:
(초청 전문가)
(PowerMapper)
이전 편집자:
(초청 전문가)
(The Paciello Group, LLC)
저자:
(초청 전문가)
(The Paciello Group, LLC)
(Knowbility) (2017년 8월까지)
(W3C) (2016년 12월까지)
피드백:
GitHub w3c/svg-aam (풀 요청, 새 이슈, 열린 이슈)

초록

SVG 접근성 API 매핑(SVG-AAM)은 사용자 에이전트가 확장 가능 벡터 그래픽(SVG) [SVG2] 마크업을 플랫폼 접근성 애플리케이션 프로그래밍 인터페이스(API)에 매핑하는 방법을 정의한다. 이는 SVG 사용자 에이전트에서 SVG 접근성을 담당하는 SVG 사용자 에이전트 개발자를 대상으로 한다.

이 명세는 SVG 저자가 차트, 그래프 및 기타 드로잉을 포함한 접근 가능한 리치 인터넷 애플리케이션을 만들 수 있게 한다. 이는 Core Accessibility API Mappings 1.1(CORE-AAM) [CORE-AAM] 및 Accessible Name and Description: Computation and API Mappings 1.1(ACCNAME-AAM) [ACCNAME-AAM] 명세를 사용자 에이전트에 맞게 확장함으로써 수행된다. 이는 이러한 핵심 매핑을 활용하고 SVG에 특화된 지침을 제공하여, SVG 사용자 에이전트가 키보드 포커스와 Web 콘텐츠에서 WAI-ARIA [WAI-ARIA]를 통해 제공되는 역할, 상태속성 특성에 어떻게 응답해야 하는지를 정의한다. SVG-AAM은 또한 플랫폼 접근성 API에 노출되는 접근 가능한 이름과 설명 정보를 계산하는 데 사용되는 표준 SVG 기능을 활용하도록 ACCNAME-AAM을 조정한다.

SVG-AAM은 WAI-ARIA 개요에 설명된 WAI-ARIA 제품군의 일부이다.

이 문서의 상태

이 절은 이 문서가 공개된 시점의 문서 상태를 설명한다. 현재 W3C 공개 문서 목록과 이 기술 보고서의 최신 개정판은 W3C 표준 및 초안 색인에서 확인할 수 있다.

참고

우리는 이 명세를 SVG 2.0의 변경 사항과 맞추기 위해 갱신하는 중이다. 이는 오래된 정보와 오류를 포함하는 초기 초안이다. 이 초안을 기반으로 구현하지 말라.

의견을 제시하려면 SVG AAM GitHub 저장소에 이슈를 제출하라. 여러 주제를 하나의 이슈에서 다루지 말고, 각 주제마다 별도의 GitHub 이슈를 생성하라. 이슈를 제출하기 위한 GitHub 계정 생성은 무료이다. 의견을 제시하기 전에 먼저 SVG AAM GitHub 저장소에서 관련 의견을 검토하라. GitHub에 이슈를 제출하는 것이 가능하지 않다면 public-svg-a11y@w3.org로 이메일을 보내라 (이전 의견의 메일 아카이브).

특히 문제가 되는 열린 이슈는 이 문서에서 GitHub 논의에 대한 링크와 함께 강조 표시된다. 이러한 이슈에 대한 의견은 특히 환영한다.

마지막으로 공개된 작업 초안(2018년 5월 10일)과 비교하여 다음 변경 사항이 이루어졌다:

이전에 공개된 작업 초안(2016년 9월 8일)과 비교하여 다음 주요 변경 사항이 이루어졌다:

또한 명확화를 위한 많은 편집이 있었다.

이 문서는 처음에 접근 가능한 리치 인터넷 애플리케이션 작업 그룹SVG 작업 그룹SVG 접근성 태스크 포스를 통해 공동으로 개발했다. 현재는 ARIA 작업 그룹이 ARIA 및 SVG 작업 그룹에서 개발한 다른 명세와 조정하여 제작한다.

이 문서는 접근 가능한 리치 인터넷 애플리케이션 작업 그룹권고 트랙을 사용하여 작업 초안으로 공개했다.

작업 초안으로 공개되었다는 것이 W3C와 그 회원의 승인을 의미하지는 않는다.

이는 초안 문서이며 언제든지 다른 문서로 갱신, 대체 또는 폐기될 수 있다. 진행 중인 작업 이외의 것으로 이 문서를 인용하는 것은 부적절하다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹이 제작했다. W3C는 그룹의 산출물과 관련하여 이루어진 모든 특허 공개의 공개 목록을 유지한다. 해당 페이지에는 특허 공개를 위한 지침도 포함되어 있다. 어떤 개인이 그 개인이 필수 청구항을 포함한다고 믿는 특허에 대한 실제 지식을 가지고 있다면, 그 개인은 W3C 특허 정책 제6절에 따라 그 정보를 공개해야 한다.

이 문서는 2025년 8월 18일 W3C 프로세스 문서의 적용을 받는다.

1. 서론

이 절은 비규범적이다.

이 명세는 SVG 호스트 언어 요소와 콘텐츠가 — WAI-ARIA 역할, 상태, 속성이 적용되었든 적용되지 않았든 — 접근성 API에 매핑되는 방식을 정의한다. 각 절은 텍스트 대체물을 계산하고, 동작을 이벤트에 매핑하며, 이벤트 처리, 특수 문서 처리 절차 및 오류 처리에 대한 지침을 제공한다.

이 서론은 이 명세가 존재하는 이유와 다른 WAI-ARIA 명세와 어떤 관련이 있는지에 대한 일부 배경을 제공한다. 여기에는 접근성 API접근 가능한 객체의 계층 구조에 대한 일반적인 개요가 포함되며, 이 계층 구조는 접근성 트리로 알려져 있다.

1.1 역사와 목적

전통적인 그래픽 사용자 인터페이스(GUI) 애플리케이션에서는 사용자 인터페이스(UI)의 구성 요소가 사용자 상호작용에 따라 필요할 때 표시되고 필요하지 않을 때 숨겨진다. 접근성 API는 사용자 인터페이스에 관한 의미론을 장애인이 사용하는 보조 기술에 전달하는 데 사용된다.

이러한 API는 애플리케이션과 화면 읽기 프로그램, 확대기, 대체 입력 장치, 음성 명령 및 제어와 같은 보조 기술 사이의 계약을 구성하며, 이들이 상호작용형 애플리케이션이나 복잡한 문서에 대한 사용 가능한 대안을 생성하는 데 필요한 적절한 의미론에 접근할 수 있게 한다. 예를 들어, 시각장애 사용자를 위한 화면 읽기 소프트웨어는 특정 UI 구성 요소가 메뉴, 버튼, 텍스트 필드, 목록 상자 등인지 판단할 수 있다. 또한 표나 목록의 정보를 각 텍스트 조각에 대한 문맥을 제공하는 방식으로 제시할 수 있다.

웹 문서와 애플리케이션의 경우, 필수적인 의미 정보는 문서 객체 모델(DOM) 안에 캡슐화된다. 보조 기술은 이 정보를 사용자 에이전트(웹 브라우저)로부터 얻으며, 사용자 에이전트는 요소와 특성을 플랫폼 접근성 API에 매핑한다.

확장 가능 벡터 그래픽(SVG) 문서에서 대부분의 SVG 요소는 보조 기술에 가치 있는 의미 정보를 제공하지 않는다. 대신, 이들은 저수준 벡터 그래픽 그리기 지시문을 나타낸다. 그 요소는 작성자가 대체 텍스트, 설명 또는 WAI-ARIA 의미론을 제공하는 경우에만 보조 기술에 의미를 갖는다.

SVG 명세의 버전 1 [SVG1] 및 버전 1.1 [SVG11]은 접근 가능한 이름설명을 정의하기 위한 요소 (<title><desc>)를 포함했다. 그러나 이 명세 이전에는 사용자 에이전트가 이 정보를 보조 기술에 어떻게 노출해야 하는지, 또는 WAI-ARIA를 지원하는 호스트 언어 및 검증기와 이를 어떻게 통합해야 하는지에 대한 규범적 지침이 없었다. 마찬가지로 사용자 에이전트가 상호작용형 SVG를 어떻게 키보드로 접근 가능하게 만들어야 하는지에 대한 지침도 없었다.

SVG 2는 이제 HTML 5에서 확립된 모델을 기반으로 키보드 탐색을 통합한다. 사용자 에이전트는 기본적으로 상호작용형인 SVG 요소(링크와 컨트롤이 있는 오디오/비디오 요소), 또는 작성자가 포커스를 받을 수 있다고 표시한 요소 (tabindex 특성 사용을 통해)에 순차 포커스 탐색을 제공한다. 또한 스크립트를 통해 포커스를 프로그래밍 방식으로 설정하거나 제거할 수 있으므로 작성자는 더 복잡한 키보드 포커스 패턴을 구현할 수 있다.

SVG는 핵심 DOM 표준 [DOM]과 밀접하게 정렬되어 있으며, 상호작용형 환경에서 그래픽의 JavaScript 조작을 지원한다. JavaScript, CSS 및 관련 API를 사용하여 작성자는 SVG를 상호작용형 애플리케이션처럼 보이고 동작하게 만들어 풍부한 상호작용형 차트와 드로잉을 생성할 수 있다.

작성자가 정적 및 상호작용형 그래픽 모두에서 의도한 의미론을 표현하고 동적으로 갱신할 수 있도록, SVG 2는 WAI-ARIA 역할, 상태 및 속성의 사용을 지원한다. 작성자는 마크업에 WAI-ARIA 특성을 포함할 수 있으며, 사용자 에이전트는 이를 플랫폼 접근성 API로 변환한다.

WAI-ARIASVG로 그린 리치 인터넷 애플리케이션이 운영 체제에 설치된 GUI 애플리케이션과 동일한 접근성 기능을 갖도록 한다. 복잡한 정적 그래픽에서 WAI-ARIA는 의미 요소가 HTML에서 제공하는 누락된 문서 구조를 제공한다.

1.2 다른 명세와의 관계

WAI-ARIA에 대한 소개는 WAI-ARIA 개요를 보라.

SVG 접근성 API 매핑 명세(이 문서)는 WAI-ARIA 기능이 SVG 언어의 네이티브 의미론과 어떻게 상호작용하는지를 정의한다. 이는 WAI-ARIA 명세를 정의하고 지원하는 리소스 모음의 일부이며, 여기에는 다음 문서들이 포함된다:

이 가이드는 Core Accessibility API MappingsAccessible Name and Description 명세([CORE-AAM] 및 [ACCNAME-AAM])에 정의된 접근성 API 매핑에 크게 의존하지만, SVG 호스트 언어 [SVG2]의 기능으로 인한 매핑의 변경 사항을 정의한다. 주요 차이 영역은 SVG의 내재적 호스트 언어 의미론에서 비롯된다:

1.3 접근성 API

GUI 애플리케이션에 대한 접근을 제공하기 위해, 소프트웨어 애플리케이션은 보조 기술이 이를 통해 상호운용하는 데 필요한 정보를 접근성 API를 통해 노출한다. 접근성 API를 통해 노출되는 접근성 정보는 애플리케이션 생애주기 전체에 걸쳐 유지되어야 한다.

웹 페이지에서는 문서 객체 모델(DOM)이 상태요소의 구조를 사용자 에이전트가 렌더링 중인 문서 안에서 표현하는 데 사용된다. 문서의 요소는 DOM 트리로 알려진 노드의 계층 구조로 조직된다. 사용자 에이전트는 데스크톱 애플리케이션이 UI 구성 요소를 매핑하는 것과 같은 방식으로 DOM을 접근성 API에 매핑한다. 접근성 API에 제공되는 정보는 보조 기술을 지원하는 데 사용되며, DOM에서 전달된 정보가 작성자의 의미적 의도와 일치한다는 기대를 전제로 한다. 작성자는 문서 언어의 네이티브 기능을 사용하거나, 네이티브 기능을 사용할 수 없는 경우 WAI-ARIA를 사용하여 이러한 의미적 의도를 전달할 수 있다.

작성자는 SVG를 사용하여 광범위한 애플리케이션과 드로잉을 만든다. API 접근성을 지원하는 데 필요한 정보는 SVG에서 요소 자체의 의미론과 WAI-ARIA 및 이 명세가 지원하는 WAI-ARIA에 대한 모듈식 확장이 제공하는 추가 의미론의 조합에서 나온다.

화면 읽기 프로그램이나 기타 보조 기술은 접근성 API를 통해 노출되는 의미 정보를 사용하여 사용자에게 의미 있는 애플리케이션의 대체 렌더링을 제공한다.

이 문서(및 이 문서가 확장하는 다른 명세)가 지원하는 접근성 API는 다음과 같다:

사용자 에이전트 개발자가 다른 접근성 API를 사용하여 정보를 노출해야 하는 경우, 해당 API가 실행되는 플랫폼의 개발자 및 해당 플랫폼의 보조 기술 개발자와 긴밀히 협력하는 것이 권장된다.

1.4 접근성 트리와 DOM 트리

접근성 트리DOM 트리는 병렬 구조이다. 대략적으로 말하면, 접근성 트리는 평탄화된 DOM 트리의 부분집합이며, 그런 다음 사용자 에이전트의 사용자 인터페이스 객체와 문서의 객체를 포함하도록 보강된다.

접근 가능한 객체는 보조 기술에 노출되어야 하는 모든 DOM 요소에 대해 접근성 트리 안에 생성된다. 요소는 접근성 이벤트를 발생시킬 수 있거나, 노출되어야 하는 속성, 관계 또는 기능을 가지고 있기 때문에 노출될 수 있다.

일반적으로 DOM 요소를 접근성 트리에서 생략해도 의미에 영향을 주지 않는다면, 성능과 단순성을 이유로 생략된다. 예를 들어, 스타일 변경만 있고 의미론이 없는 <span>은 자체 접근 가능한 객체를 갖지 않을 수 있지만, 스타일 변경은 다른 수단으로 노출된다.

2. 적합성

비규범적인 것으로 표시된 절뿐만 아니라, 이 명세의 모든 작성 지침, 다이어그램, 예제 및 참고는 비규범적이다. 이 명세의 그 밖의 모든 것은 규범적이다.

이 문서의 핵심어 MAY, MUST, MUST NOT, OPTIONAL, RECOMMENDED, REQUIRED, SHALL, SHALL NOT, SHOULDSHOULD NOT은 여기에 표시된 것처럼 모두 대문자로 나타나는 경우에만 BCP 14 [RFC2119] [RFC8174]에 설명된 대로 해석되어야 한다.

2.1 SVG에 대한 규범적 사용자 에이전트 구현 요구 사항

이 명세는 특정 절을 비규범적, 즉 정보성으로 표시한다. 이 분류는 전체 절에 적용된다. 다른 모든 절은 규범적 요구 사항을 제공한다. “이 절은 비규범적이다”라는 진술은 달리 표시되지 않는 한 그 하위 절 전체에 적용된다. 또한 “Note”라고 레이블이 붙은 모든 텍스트 상자는 정보성이다.

규범적 절은 이 명세에 적합한 구현이 되기 위해 사용자 에이전트가 따라야 하는 요구 사항을 제공한다. 이 문서의 핵심어 MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, RECOMMENDED, MAYOPTIONAL요구 수준을 나타내기 위해 RFC에서 사용하는 핵심어 [rfc2119]에 설명된 대로 해석되어야 한다. RFC-2119 핵심어는 대문자로 형식화되고 class="rfc2119"를 가진 요소 안에 포함된다. 위에 표시된 핵심어가 사용되지만 이 형식을 공유하지 않는 경우, 이는 RFC 2119의 의미에서 공식 정보를 전달하지 않으며, 단지 설명적, 즉 정보성일 뿐이다. 가능한 한 이 명세에서는 그러한 사용을 피한다.

정보성 절과 참고는 명세를 이해하는 데 유용한 정보를 제공한다. 이러한 절에는 권장 관행의 예제가 포함될 수 있지만, 이 명세에 적합하기 위해 그러한 권장 사항을 따를 필요는 없다.

3. 키보드 내비게이션 지원

웹 애플리케이션에서 키보드 내비게이션을 가능하게 하는 것은 접근 가능한 웹 애플리케이션을 가능하게 하기 위한 필수 단계이다. 키보드는 많은 사용자에게 기본 입력 장치일 뿐만 아니라, 다른 접근 가능한 입력 장치도 키보드 이벤트를 사용하여 사용자 에이전트와 통신한다.

확장 가능 벡터 그래픽(SVG) 1 [SVG1] 및 1.1 [SVG11] 명세에는 매우 제한적인 키보드 지원(애니메이션용 액세스 키)만 포함되어 있었다. 많은 사용자 에이전트가 링크에 대해 탭 포커스를 구현했지만, 작성자가 이 동작을 제어할 수 있는 선언적 또는 스크립트 기반 수단은 없었다. 확장 가능 벡터 그래픽(SVG) 2 [SVG2]는 HTML tabindex 모델을 기반으로 키보드 내비게이션과 포커스 제어를 도입한다.

적합한 사용자 에이전트는 MUST Core Accessibility API Mappings [CORE-AAM]의 키보드 내비게이션 지원 요구 사항에 적합해야 한다.

참고

SVG 접근성 태스크 포스는 그래픽 문서에서의 내비게이션과 관련하여 작성자 및 사용자 에이전트를 위한 더 자세한 지침을 개발할 계획이다.

4. WAI-ARIA를 접근성 API에 매핑하기

WAI-ARIA 지원은 Scalable Vector Graphics(SVG) 2 [SVG2]에서 SVG에 공식적으로 도입되었으며, 이는 ARIA 특성이 기본 네임스페이스에서 사용될 수 있도록 한다. 이 절은 WAI-ARIA 의미론이 플랫폼 접근성 API를 통해 보조 기술에 어떻게 노출되는지와, SVG 요소가 WAI-ARIA를 기반으로 접근성 API에 어떻게 매핑되는지를 정의한다.

4.1 WAI-ARIA 의미론을 노출하기 위한 일반 규칙

SVG 사용자 에이전트는 다음 하위 절에서 설명하는 추가 사항과 함께, Core Accessibility API Mappings [CORE-AAM]의 WAI-ARIA 의미론을 노출하기 위한 일반 규칙MUST 적합해야 한다.

4.1.1 접근성 트리에서 요소 제외하기

DOM의 특정 요소는 접근성 API를 통해 노출되지 않는다. Core Accessibility API Mappings [CORE-AAM]의 접근성 트리에서 요소 제외하기 절은 요소를 제외하기 위한 일반 규칙을 개괄한다. 한 가지 요소는 호스트 언어 의미론이 해당 요소가 표시되지 않아야 한다고 지정하는지 여부이다.

SVG 언어는 이 기준에 맞는 수많은 요소를 정의한다. 많은 SVG 요소는 화면에 직접 렌더링되지 않으며, 다른 요소는 문맥이나 CSS 스타일링에 따라 렌더링되거나 표시될 수도 있고 그렇지 않을 수도 있다. 지각 가능하지도 않고 상호작용형도 아닌 요소는 접근성 API에 노출되는 접근성 트리에 포함되어서는 안 된다. 이 절은 SVG 호스트 언어 의미론의 예상되는 해석을 자세히 설명한다.

참고

Core Accessibility API Mappings에 설명된, 요소를 제외하기 위한 다른 요소들은 다음과 같이 요약할 수 있다:

  • 작성자가 제공한 첫 번째 매핑 가능한 역할이 none 또는 presentation인 경우, 해당 요소는 노출되어서는 안 된다.
  • 요소 또는 그 조상에 true 값의 aria-hidden이 있는 경우, 해당 요소는 노출되지 않아야 한다.
  • 요소의 조상이 WAI-ARIA 명세 [WAI-ARIA]에서 "Children Presentational: True" 특성을 가진 사용된 역할을 가지는 경우, 그 자식 요소는 노출되지 않아야 한다. 예를 들어, buttonimg 역할은 모든 자식 콘텐츠가 접근성 트리에 직접 포함되는 것을 제외한다.

그러나 상호작용성과 같은 요소의 여러 기능으로 인해 작성자가 제공했거나 상속된 none 또는 presentation 역할이 오류로 무시될 수 있음에 유의하라. 요소가 현재 사용자 상호작용을 기반으로 포커스를 받을 수 있는 경우에는 제외되지 않는다.

규범 텍스트는 원문 문서 ([CORE-AAM])를 참조하라.

화면에 직접 렌더링되지도 않고 그래픽의 상호작용형 영역으로 표현되지도 않는 요소에는 대응하는 접근 가능한 객체가 필요하지 않다. 사용자 에이전트는 SVG 요소 매핑 표에서 no accessible object created로 표시된 요소 또는 그 하위 콘텐츠를 접근성 트리접근 가능한 객체로 포함해서는 MUST NOT 된다. 사용자 에이전트는 과거 또는 미래의 SVG 명세나 모듈에서 해당 요소가 절대 직접 렌더링되지 않음을 구체적으로 나타내는 다른 요소도 제외해야 SHOULD 한다.

예를 들어, 필터, 그래디언트 또는 그래디언트 중단점을 나타내는 요소는 접근 가능한 객체를 생성하지 않는다. SVG 정의 절 안에 포함되거나 패턴의 일부로 포함된 도형 요소 또는 이미지 요소도 접근 가능한 객체를 갖지 않는다. 이는 조상 defs 또는 pattern 요소의 의미론이 전체 DOM 하위 트리가 접근성 트리에 표현되는 것을 배제하기 때문이다.

접근성 트리에서 제외된 요소는 여전히 이름과 설명 절에 정의된 대로 다른 요소의 이름 및 설명 계산에 사용될 수 있다. 렌더링되지 않는 요소는 Use-Element 그림자 트리 절에 설명된 것처럼 use 요소가 생성하는 렌더링된 요소 인스턴스의 템플릿으로도 사용될 수 있다.

참고

애니메이션 및 뷰 요소는 접근성 트리에 직접 포함되지는 않지만, 추가 계산이 필요한 특수 처리 아래에 설명된 것처럼 대상 요소를 나타내는 접근 가능한 객체에 영향을 줄 수 있다.

또한 SVG 1.1 [SVG11]은 조건부 처리 특성 systemLanguage, requiredExtensions, 및 requiredFeatures를 정의한다. 이들은 특정 조건에서 콘텐츠가 렌더링되는 것을 방지하거나 콘텐츠의 대체 버전 중에서 선택하기 위해 개별적으로 또는 switch 요소와 함께 사용될 수 있다.

SVG 사용자 에이전트는 해당 요소의 조건부 처리 특성 때문에 또는 switch 구성 안에서의 해당 요소 위치 때문에 렌더링되지 않는 요소를 접근성 API에 노출해서는 MUST NOT 된다. switch 요소 자체는 none 또는 presentation 역할을 가진 것처럼 생략되어야 SHOULD 한다.

SVG 요소의 렌더링은 스타일시트 규칙, 인라인 스타일, 프레젠테이션 특성 또는 애니메이션을 사용하여 지정될 수 있는 CSS 스타일링 속성의 영향도 받는다. 스타일 속성이 어떻게 지정되었는지와 관계없이, 그 효과는 CSS 캐스케이드 [CSS-CASCADE-3]에 의해 결정되는 최종 계산값에 의존한다. 사용자 에이전트는 계산된 스타일에 display 속성의 none 값이 포함되어 렌더링되지 않는 요소를 접근성 API에 노출해서는 MUST NOT 된다.

다른 스타일 속성은 렌더링 트리의 일부인 요소가 렌더링된 그래픽에서 아무런 가시적 표현을 만들지 못하게 할 수 있다. 이러한 요소는 여전히 상호작용형일 수 있으며, 키보드 포커스를 받을 수 있거나 포인터 입력 이벤트에 반응하는 그래픽 영역과 연결될 수 있다.

SVG의 목적상, 요소는 visibility 속성의 계산값에 따라 보이지도 않고, pointer-events 속성에 따라 포인터 사용자에게 상호작용형도 아닌 경우에 숨겨진 것으로 간주된다. 사용자 에이전트는 작성자가 aria-hidden 특성을 false로 설정하여 숨김을 명시적으로 재정의하지 않는 한, 이러한 의미에서 숨겨진 요소를 접근성 API에 노출하지 않아야 SHOULD NOT 한다.

컨테이너 요소(g 또는 svg와 같은)의 경우, 그 하위 콘텐츠 중 어느 하나라도 보이거나 사용자 이벤트를 받을 수 있다면, 요소 자체의 visibility 계산값과 관계없이 해당 요소는 숨겨진 것으로 간주되지 않는다. 마찬가지로, use 요소는 개별 도형 요소라면 숨겨지게 할 스타일 속성을 가지고 있더라도 보이거나 상호작용형인 구성 그래픽을 포함할 수 있다. use 요소는 그 그림자 트리 안의 요소 중 어느 하나라도 보이거나 상호작용형이면 보이거나 상호작용형으로 간주되어야 MUST 한다. (그러나 컨테이너 또는 use 요소는 접근성 트리에 포함해야 할 다른 이유가 없다면 여전히 프레젠테이션용으로 간주될 수 있다.) 마커가 있는 도형 요소는 그 마커 중 어느 하나라도 보이거나 상호작용형이면 보이거나 상호작용형이다.

참고

HTML 및 기타 CSS로 스타일링된 문서에서는 visibility: hidden으로 보이지 않게 된 요소가 접근성 목적상 항상 숨겨진 요소이며, 렌더링되지 않는 요소(display: none을 가진 요소와 같은)와 동등하다.

SVG의 경우에는 pointer-events 속성과의 상호작용 때문에 이것이 항상 적절하지는 않다.

많은 경우 보이지 않는 요소는 상호작용형이기 때문에 의미적으로 중요하지만, 보이는 요소는 프레젠테이션용일 뿐이다. 예를 들어, 큰 보이지 않는 요소는 지도나 데이터 차트의 지점에 대해 쉽게 맞출 수 있는 대상을 제공하기 위해 자주 사용된다. 이러한 요소는 포인터 이벤트에 반응하므로 포인터 사용자에게 사실상 지각 가능하며, 보조 기술 사용자에게도 지각 가능하고 상호작용형이어야 한다.

visibility: hidden의 계산값을 가진 SVG 요소는 pointer-events 속성의 다음 값에 대해 포인터 사용자에게 상호작용형일 수 있다:

  • painted, 단 fillstroke 속성이 모두 none의 계산값을 갖는 도형 또는 텍스트를 제외한 모든 렌더링된 요소
  • fill
  • stroke
  • all
  • bounding-box

현재 화면 밖에 배치된 요소나 다른 요소에 의해 가려진 요소는 숨겨진 것으로 간주되지 않는다. 사용자 에이전트는 Core Accessibility API Mappings [CORE-AAM]의 상태 및 속성 매핑 절에 설명된 것처럼 다른 수단을 통해 이 상태를 노출해야 한다.

참고

다양한 다른 스타일 속성 및 기하학적 특성(요소 자체 또는 조상 요소의 것)이 요소를 보이지 않게 만들 수 있다. 단순성, 유연성 및 성능상의 이유로 이들은 접근성 트리에서 요소를 제외하는 숨김 방법으로 간주되지 않는다.

display 또는 visibility 이외의 속성을 사용하여 비활성 콘텐츠를 숨길 때, 작성자는 aria-hidden 특성을 사용하여 보조 기술이 해당 요소와 그 하위 요소를 무시해야 함을 나타낼 수 있다.

편집자 참고

이 명세의 이전 초안에서는 fillstroke 속성이 둘 다 none 값으로 설정된 경우도 요소를 숨기는 유효한 방법으로 간주했다. 이는 과도한 복잡성을 도입했기 때문에 제거되었다. 일부 SVG 요소(예: 포함된 이미지)는 stroke 및 fill의 영향을 받지 않으며, 영향을 받는 요소조차도 마커나 필터 효과 때문에 그것 없이도 보일 수 있다. 또한 이는 겉보기에는 동일한 그래픽(예: fill: none 대신 fill: transparent를 사용한 그래픽)이 현저히 다른 접근성 트리를 갖는 결과를 낳을 수 있었다.

그러나 fillstroke 속성은 pointer-events 속성의 값에 따라 요소의 포함 여부에 여전히 간접적인 영향을 줄 수 있음에 유의하라.

이슈 6: 구조화된 설명을 접근성 트리에 노출해야 하는가? ARIA WG 의견 필요구현자 의견 필요

desc를 포함한 렌더링되지 않는 메타데이터 요소를 접근성 트리에서 엄격히 제외한다는 것은 그 콘텐츠가 탐색 모드에서 사용자가 탐색할 수 있는 구조화된 대체 표현이 아니라, 일반 텍스트로만 사용 가능하다는 것을 의미한다.

이는 이러한 요소가 HTML 네임스페이스 콘텐츠를 포함한 구조화된 콘텐츠를 포함할 수 있도록 허용하는 SVG 명세의 원래 의도와 모순된다. SVG 1 명세는 이것이 대안적으로 CSS 형식의 XML 텍스트로 제시될 수 있다고 제안했지만, 이는 현재 사용 중인 사용자 에이전트/보조 기술 조합에서 지원되지 않는다.

편집자는 사용자 에이전트 및 접근성 API 구현과 일관된 방식으로 이 숨겨진 대체 콘텐츠를 표현하는 다른 방법에 대한 피드백과 제안(GitHub 이슈 #6)을 환영한다.

4.1.2 접근성 트리에 요소 포함하기

많은 SVG 요소는 화면에 렌더링되기는 하지만 내재적인 의미적 의미를 갖지 않는다. 대신, 이들은 문서의 시각적 표현 구성 요소를 나타낸다. 문서의 접근 가능한 표현을 단순화하기 위해, 이러한 순수한 프레젠테이션 요소는 작성자가 명시적으로 의미적 콘텐츠를 제공하지 않는 한 일반적으로 접근성 트리에서 생략되어야 한다.

그러나 렌더링된 모든 SVG 요소는 의미적 의미를 가질 수 있다. 작성자는 대체 텍스트 콘텐츠 또는 WAI-ARIA 특성을 포함하여 요소의 중요성을 나타낸다. 이 절은 일반적으로 생략되는 요소를 접근성 트리에 포함하기 위한 규칙을 정의한다.

SVG 네임스페이스의 다음 그래픽 및 컨테이너 요소는 이 절에 설명된 경우를 제외하고 접근성 트리에 포함되지 않아야 SHOULD NOT 한다:

  • 도형 요소(circle, ellipse, line, path, polygon, polyline, rect)
  • use 요소
  • 그룹화(g) 요소
  • image 요소
  • mesh 요소
  • 텍스트 서식 요소(textPath, tspan)
  • foreignObject 요소

이러한 요소는 접근성 트리에서 생략되지만, 그 자식 콘텐츠는 접근성 트리에 포함된 DOM 트리의 가장 가까운 조상 노드의 직접 자식인 것처럼 계속 처리된다. 즉, 마크업 요소는 none 또는 presentation 역할을 가진 것처럼 처리된다.

use 요소의 경우, 그 연관된 그림자 트리 안의 요소와 텍스트는 추가 계산이 필요한 처리에 지정된 조건을 따라 use 요소의 자식 콘텐츠인 것처럼 처리되어야 MUST 한다. 이는 use 요소 자체가 (기본 또는 작성자 제공) presentation 역할을 가지고 있더라도, 그림자 트리의 요소가 접근성 트리에 포함될 수 있음을 의미한다.

SVG 사용자 에이전트는 다음 기준 중 하나를 충족하는 렌더링된 SVG 요소에 대해 접근성 트리에 접근 가능한 객체를 제공해야 MUST 한다. 단, 접근성 트리에서 요소 제외하기의 규칙에 따라 접근성 트리에서 제외되는 경우는 예외이다:

  • 공백을 제거한 뒤 비어 있지 않은, 직접 자식 title 요소 또는 desc' 요소가 하나 이상 있다. 사용자 에이전트는 유효한 텍스트 콘텐츠를 확인하지 않고도 이러한 자식 요소를 가진 요소를 포함할 수 MAY 있다.
  • 공백을 제거한 뒤 비어 있지 않은 aria-label 특성 또는 aria-roledescription 특성이 있다.
  • 유효한 IDREF 토큰을 포함하는 aria-labelledby 특성 또는 aria-describedby 특성이 있다. 사용자 에이전트는 유효성을 확인하지 않고도 이러한 특성을 가진 요소를 포함할 수 MAY 있다.
  • 유효한 정수 'tabindex' 특성이 있다.
  • 작성자가 none 또는 presentation 이외의 허용된 비추상 WAI-ARIA 역할을 제공했다.
  • Core Accessibility API Mappings 명세 [CORE-AAM]의 접근성 트리에 요소 포함하기 절에 나열된 기준 중 하나를 충족한다.
참고

이 문서를 작성할 당시 해당 기준은 다음과 같다:

규범 텍스트는 원본 문서 [CORE-AAM]의 최신 버전을 참조해야 한다.

숨겨진 요소에 대한 예외는 SVG 메타데이터 요소 또는 기타 렌더링되지 않는 콘텐츠가 자신은 접근성 트리에 포함되지 않으면서도 다른 요소의 접근 가능한 이름과 설명에 사용될 수 있음을 의미한다. 예를 들어, 현재의 폴백 브라우저 지원 모범 사례는 aria-labelledbyaria-describedby를 사용하여 titledesc 자식 요소에 중복으로 연결하는 것이다. 이러한 요소를 트리에 별도 노드로 포함하면 화면 읽기 프로그램 사용자에게 제시되는 문서가 불필요하게 복잡해진다.

상호작용형 요소는 접근성 API 이벤트를 발생시킬 수 있는 요소에 관한 요구 사항에 포함된다. 구체적으로, SVG의 경우 다음 요소는 상호작용형이며, 달리 숨겨진 것으로 간주되거나 프레젠테이션용으로 간주되더라도 예외 없이 접근성 트리에 포함되어야 MUST 한다:

  • tabindex 특성에 양의 정수 값을 가진 렌더링된 요소(또는 use-element 그림자 트리 안의 요소 인스턴스), 또는 기본적으로 포커스 가능하고 음의 정수 tabindex 특성으로 탭 순서에서 제거되지 않았으며, 키보드 포커스를 받아 따라서 키보드 입력 이벤트를 받을 수 있는 요소.
  • 현재 키보드 포커스를 가진 렌더링된 요소 (또는 요소 인스턴스) (예: 스크립트에서 포커스된 뒤)로, 키보드 입력 이벤트를 받을 수 있는 요소.

DOM 트리 위로 버블링되는 포인터 이벤트와 관련해서는, 이벤트를 받는 정확한 요소가 의미적 의미를 갖지 않을 수 있다(즉, 여전히 프레젠테이션용일 수 있다). 그러나 포인터 이벤트를 받을 수 있는 능력은 visibility: hidden 스타일 속성에 기반한 모든 제외를 재정의한다.

참고

tabindex 특성과 pointer-events 속성은 display: none 속성이나 호스트 언어 의미론 때문에 전혀 렌더링되지 않는 요소에는 아무런 영향을 주지 않는다.

4.2 네이티브 마크업 의미론과 WAI-ARIA 간의 충돌

SVG 사용자 에이전트는 호스트 언어가 SVG이고 네이티브 의미론이 SVG 요소 매핑 표, 상태 및 속성 매핑 절, 그리고 추가 계산이 필요한 특수 처리 절에 설명된 것과 같은 경우, Core Accessibility API Mappings [CORE-AAM]의 네이티브 마크업 의미론과 WAI-ARIA 간의 충돌MUST 적합해야 한다.

SVG 요소 매핑 표에 정의된 것처럼 접근 가능한 객체가 생성되지 않고 어떤 역할도 적용될 수 없는 요소는 암시적 역할 의미론을 갖지 않는다. aria-roledescription 특성은 이러한 요소에 노출되어서는 MUST NOT 된다. 그 밖의 모든 SVG 요소는 aria-roledescription을 포함한 전역 WAI-ARIA 특성과 함께 사용될 때 암시적 역할 의미론을 갖는다.

4.3 접근성 API 속성에 직접 매핑되지 않는 특성 노출하기

SVG 사용자 에이전트는 Core Accessibility API Mappings [CORE-AAM]의 접근성 API 속성에 직접 매핑되지 않는 특성 노출하기MUST 적합해야 한다.

5. 역할 매핑

플랫폼 접근성 API는 전통적으로 해당 플랫폼의 보조 기술이 기대하는 유한한 집합의 미리 정의된 역할을 가지고 있었으며, 하나 또는 두 개의 역할만 노출될 수 있다.

WAI-ARIA는 한 번에 하나의 활성 역할만 지원한다. 그러나 여러 역할을 공백으로 구분된 유효한 역할 토큰의 순서 있는 집합으로 지정할 수 있다. 추가 역할은 첫 번째 선택 글꼴이 지원되지 않는 경우 여러 글꼴 패밀리를 지정하는 개념과 유사한 폴백 역할이다. 이를 통해 특수 애플리케이션을 위해 향후 역할 분류 체계를 확장할 수 있다. 가능한 경우 전체 역할 문자열이 접근성 기술에 노출되어, 플랫폼 API에 동등한 역할이 없더라도 적절히 응답할 수 있다.

5.1 일반 규칙

SVG 사용자 에이전트는 Core Accessibility API Mappings [CORE-AAM]의 역할 매핑 일반 규칙 접근성 API 계산 요구 사항에 MUST 적합해야 한다.

5.2 SVG 요소 매핑 표

이 절은 SVG2의 요소가 네이티브 호스트 언어 의미론을 기반으로 WAI-ARIA 역할 및 플랫폼 접근성 API에 어떻게 매핑되는지를 정의하며, 어떤 WAI-ARIA 역할이 적용될 수 있는지도 포함한다. 이 절은 Core Accessibility API Mappings [CORE-AAM] 명세의 Role Mappings와 Graphics Accessibility API Mappings [GRAPHICS-AAM] 명세의 Role Mappings를 직접 참조하며, 이들은 WAI-ARIA 역할이 플랫폼 접근성 API에 어떻게 매핑되는지를 정의한다.

5.2.1 a

SVG 명세 a
기본 플랫폼 WAI-ARIA 역할 매핑 요소에 유효한 href 또는 xlink:href 특성이 있는 경우 link 역할. 링크가 아닌 a 요소의 경우, a 요소가 text의 하위 요소이면 tspan에 대한 매핑을 사용하고, 그렇지 않으면 g에 대한 매핑을 사용한다.
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.2 animate

SVG 명세 animate
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.3 animateMotion

SVG 명세 animateMotion
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.4 animateTransform

SVG 명세 animateTransform
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.5 audio

SVG 명세 audio
기본 플랫폼 WAI-ARIA 역할 매핑 HTML Accessibility API Mappings 명세 [HTML-AAM]의 HTML audio 요소에 대한 권고를 따른다.
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 application 역할

5.2.6 canvas

SVG 명세 canvas
기본 플랫폼 WAI-ARIA 역할 매핑 HTML Accessibility API Mappings 명세 [HTML-AAM]의 HTML canvas 요소에 대한 권고를 따른다.
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.7 circle

SVG 명세 circle
기본 플랫폼 WAI-ARIA 역할 매핑 요소가 접근성 트리에 요소 포함하기 기준을 충족하는 경우 graphics-symbol 역할 매핑. 그렇지 않으면 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.8 clipPath

SVG 명세 clipPath
기본 플랫폼 WAI-ARIA 역할 매핑 이 요소 또는 어떤 자식 콘텐츠에 대해서도 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.9 defs

SVG 명세 defs
기본 플랫폼 WAI-ARIA 역할 매핑 이 요소 또는 어떤 자식 콘텐츠에 대해서도 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.10 desc

SVG 명세 desc
기본 플랫폼 WAI-ARIA 역할 매핑 이 요소 또는 어떤 자식 콘텐츠에 대해서도 접근 가능한 객체가 생성되지 않음. 이름과 설명 매핑을 보라
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.11 ellipse

SVG 명세 ellipse
기본 플랫폼 WAI-ARIA 역할 매핑 요소가 접근성 트리에 요소 포함하기 기준을 충족하는 경우 graphics-symbol 역할 매핑. 그렇지 않으면 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.12 feBlend

SVG 명세 feBlend
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.13 feColorMatrix

SVG 명세 feColorMatrix
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.14 feComponentTransfer

SVG 명세 feComponentTransfer
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.15 feComposite

SVG 명세 feComposite
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.16 feConvolveMatrix

SVG 명세 feConvolveMatrix
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.17 feDiffuseLighting

SVG 명세 feDiffuseLighting
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.18 feDisplacementMap

SVG 명세 feDisplacementMap
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.19 feDistantLight

SVG 명세 feDistantLight
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.20 feDropShadow

SVG 명세 feDropShadow
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.21 feFlood

SVG 명세 feFlood
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.22 feFuncA

SVG 명세 feFuncA
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.23 feFuncB

SVG 명세 feFuncB
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.24 feFuncG

SVG 명세 feFuncG
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.25 feFuncR

SVG 명세 feFuncR
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.26 feGaussianBlur

SVG 명세 feGaussianBlur
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.27 feImage

SVG 명세 feImage
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.28 feMerge

SVG 명세 feMerge
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.29 feMergeNode

SVG 명세 feMergeNode
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.30 feMorphology

SVG 명세 feMorphology
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.31 feOffset

SVG 명세 feOffset
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.32 fePointLight

SVG 명세 fePointLight
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.33 feSpecularLighting

SVG 명세 feSpecularLighting
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.34 feSpotLight

SVG 명세 feSpotLight
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.35 feTile

SVG 명세 feTile
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.36 feTurbulence

SVG 명세 feTurbulence
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.37 filter

SVG 명세 filter
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.38 foreignObject

SVG 명세 foreignObject
기본 플랫폼 WAI-ARIA 역할 매핑 요소가 접근성 트리에 요소 포함하기 기준을 충족하는 경우 group 역할 매핑. 그렇지 않으면 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.39 g

SVG 명세 g
기본 플랫폼 WAI-ARIA 역할 매핑 요소가 접근성 트리에 요소 포함하기 기준을 충족하는 경우 group 역할 매핑. 그렇지 않으면 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.40 iframe

SVG 명세 iframe
기본 플랫폼 WAI-ARIA 역할 매핑 HTML Accessibility API Mappings 명세 [HTML-AAM]의 HTML iframe 요소에 대한 권고를 따른다.
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 application, document, img

5.2.41 image

SVG 명세 image
기본 플랫폼 WAI-ARIA 역할 매핑 요소가 접근성 트리에 요소 포함하기 기준을 충족하는 경우 img 역할 매핑. 그렇지 않으면 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.42 line

SVG 명세 line
기본 플랫폼 WAI-ARIA 역할 매핑 요소가 접근성 트리에 요소 포함하기 기준을 충족하는 경우 graphics-symbol 역할 매핑. 그렇지 않으면 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.43 linearGradient

SVG 명세 linearGradient
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.44 marker

SVG 명세 marker
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.45 mask

SVG 명세 mask
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.46 metadata

SVG 명세 metadata
기본 플랫폼 WAI-ARIA 역할 매핑 이 요소 또는 어떤 자식 콘텐츠에 대해서도 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.47 mpath

SVG 명세 mpath
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.48 path

SVG 명세 path
기본 플랫폼 WAI-ARIA 역할 매핑 요소가 접근성 트리에 요소 포함하기 기준을 충족하는 경우 graphics-symbol 역할 매핑. 그렇지 않으면 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.49 pattern

SVG 명세 pattern
기본 플랫폼 WAI-ARIA 역할 매핑 이 요소 또는 어떤 자식 콘텐츠에 대해서도 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.50 polygon

SVG 명세 polygon
기본 플랫폼 WAI-ARIA 역할 매핑 요소가 접근성 트리에 요소 포함하기 기준을 충족하는 경우 graphics-symbol 역할 매핑. 그렇지 않으면 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.51 polyline

SVG 명세 polyline
기본 플랫폼 WAI-ARIA 역할 매핑 요소가 접근성 트리에 요소 포함하기 기준을 충족하는 경우 graphics-symbol 역할 매핑. 그렇지 않으면 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.52 radialGradient

SVG 명세 radialGradient
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.53 rect

SVG 명세 rect
기본 플랫폼 WAI-ARIA 역할 매핑 요소가 접근성 트리에 요소 포함하기 기준을 충족하는 경우 graphics-symbol 역할 매핑. 그렇지 않으면 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.54 script

SVG 명세 script
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.55 set

SVG 명세 set
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.56 source

SVG 명세 source
기본 플랫폼 WAI-ARIA 역할 매핑 HTML Accessibility API Mappings 명세 [HTML-AAM]의 HTML source 요소에 대한 권고를 따른다.
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.57 stop

SVG 명세 stop
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.58 style

SVG 명세 style
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.59 svg

SVG 명세 svg
기본 플랫폼 WAI-ARIA 역할 매핑 graphics-document
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.60 switch

SVG 명세 switch
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.61 symbol

SVG 명세 symbol
기본 플랫폼 WAI-ARIA 역할 매핑 graphics-object 역할 매핑. 요소가 접근성 트리에 요소 포함하기 기준을 충족하는 경우에 해당한다. 그렇지 않으면 접근 가능한 객체가 생성되지 않음
참고

symbol 요소는 직접 렌더링되지 않으므로 접근성 트리에 직접 노출되지 않는다. 그러나 해당 요소의 역할(기본 또는 작성자가 제공한 역할)은 use-element 그림자 트리에서 렌더링되는 symbol 인스턴스에 사용된다. 작성자가 이름, 설명, 역할 또는 상호작용성을 어디에 제공했는지에 따라 symbol 요소나 use 요소, 또는 둘 다에 연관된 접근 가능한 객체가 있을 수 있다.

허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.62 text

SVG 명세 text
기본 플랫폼 WAI-ARIA 역할 매핑 group 역할. 단, 다음과 같은 플랫폼별 API 매핑을 사용한다:
MSAA + IAccessible2
역할: IA2_ROLE_PARAGRAPH
인터페이스: IAccessibleText2; IAccessibleHypertext2
UIA
컨트롤 유형: Text
ATK
역할: ATK_ROLE_SECTION
인터페이스: AtkText; AtkHypertext
AX
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: "group"
참고

위에 제공된 플랫폼 매핑은 HTML Accessibility API Mappings 명세 [HTML-AAM]에서 HTML p 요소에 권장하는 매핑과 유사하다. 현재는 별개의 텍스트 블록을 정의하는 WAI-ARIA 역할이 없다. 그러나 이러한 역할(단락 또는 별개의 텍스트 영역을 나타내는 역할)은 많은 플랫폼 접근성 API에 존재하므로, 일반적인 group 역할 대신 사용된다.

허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.63 textPath

SVG 명세 textPath
기본 플랫폼 WAI-ARIA 역할 매핑 요소가 접근성 트리에 요소 포함하기 기준을 충족하는 경우 group 역할 매핑. 그렇지 않으면 접근 가능한 객체가 생성되지 않지만, 텍스트 스타일링의 변경 사항은 지원되는 경우 부모 텍스트 요소의 속성을 통해 노출되어야 SHOULD 한다
이슈

textPathtspan에 대한 역할 매핑은 열린 이슈이다.

허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.64 title

SVG 명세 title
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음. 이름과 설명 매핑을 보라
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.65 track

SVG 명세 track
기본 플랫폼 WAI-ARIA 역할 매핑 HTML Accessibility API Mappings 명세 [HTML-AAM]의 HTML track 요소에 대한 권고를 따른다.
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음

5.2.66 tspan

SVG 명세 tspan
기본 플랫폼 WAI-ARIA 역할 매핑 요소가 접근성 트리에 요소 포함하기 기준을 충족하는 경우 group 역할 매핑. 그렇지 않으면 접근 가능한 객체가 생성되지 않지만, 텍스트 스타일링의 변경 사항은 지원되는 경우 부모 텍스트 요소의 속성을 통해 노출되어야 SHOULD 한다
이슈

textPathtspan에 대한 역할 매핑은 열린 이슈이다.

허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.67 use

SVG 명세 use
기본 플랫폼 WAI-ARIA 역할 매핑 graphics-object 역할 매핑. 요소가 접근성 트리에 요소 포함하기 기준을 충족하는 경우에 해당한다. 그렇지 않으면 접근 가능한 객체가 생성되지 않음
참고

use 요소의 그림자 트리 안에 있는 재사용된 그래픽은, 호스트 요소가 접근성 트리에 포함되지 않더라도 여전히 접근성 트리에 포함될 수 있음에 유의하라.

편집자 참고

이 명세의 이전 초안에서는 재사용된 그래픽 요소를 직접 노출할 것을 요구하지 않았다. use 요소는 원자적 객체로 취급되었다. 이는 재사용된 그래픽 안에 상호작용형 콘텐츠나 텍스트가 존재할 가능성과 일치하지 않았다.

use 요소를 직접 노출하도록 변경함에 따라, use 요소의 접근 가능한 이름과 설명에 대한 특수 규칙은 더 이상 필요하지 않다.

허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 모든 역할. Core Accessibility API Role MappingsGraphics Accessibility API Role Mappings를 보라

5.2.68 video

SVG 명세 video
기본 플랫폼 WAI-ARIA 역할 매핑 HTML Accessibility API Mappings 명세 [HTML-AAM]의 HTML video 요소에 대한 권고를 따른다.
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 application 역할

5.2.69 view

SVG 명세 view
기본 플랫폼 WAI-ARIA 역할 매핑 접근 가능한 객체가 생성되지 않음. 특수 처리 요구 사항은 SVG 절을 보라
허용되는 WAI-ARIA 역할 및 플랫폼 WAI-ARIA 역할 매핑 어떤 역할도 적용될 수 없음
이슈 2: textPath 및 tspan에는 플랫폼별 매핑이 필요함 구현자 의견 필요

textPathtspan에 group 역할을 사용하는 것은 별개의 객체를 형성하는 텍스트 콘텐츠 범위에 대한 일반 컨테이너로서의 사용이다 (추가 대체 텍스트 레이블이나 설명이 있거나, 상호작용형이기 때문이다). ARIA 1.1에는 비상호작용형 텍스트 범위에 대한 역할이 없다.

텍스트 전용 플랫폼 접근성 API 역할이 이 기능을 더 효과적으로 수행할 수 있는지 다루기 위해 더 많은 작업이 필요하다. 특히 ATK의 경우 ATK_ROLE_STATIC 역할이 일반적인 group 매핑보다 더 적절할 가능성이 있다.

개선된 매핑에 대한 제안은 GitHub 이슈 #2에서 환영한다)

6. 상태 및 속성 매핑

이 절은 WAI-ARIA 상태속성을 노출하는 방법을 설명한다. SVG 사용자 에이전트는 Core Accessibility API Mappings [CORE-AAM]의 상태 및 속성 매핑 접근성 API 계산 요구 사항에 MUST 적합해야 한다.

또한 SVG 요소의 다음 특성은 특수 처리가 필요하다:

여기서 xlink 접두사는 XLink 네임스페이스 http://www.w3.org/1999/xlink를 가리키는 데 사용된다. 해당 네임스페이스 안의 주어진 이름을 가진 특성은, 그 네임스페이스가 마크업이나 스크립트를 통해 어떻게 적용되었는지와 관계없이 여기에 설명된 대로 처리되어야 한다. XLink 네임스페이스 특성은 SVG 2 [SVG2]에서 폐기 예정이지만, 하위 호환성을 유지하기 위해 사용자 에이전트는 여전히 이를 처리할 것으로 기대된다. 그럼에도 불구하고 SVG 2는 주어진 요소에 둘 다 설정된 경우 기본 네임스페이스의 href 특성이 XLink에 해당하는 특성보다 우선해야 함을 요구한다. 이 경우 XLink 버전은 이름과 설명 계산의 목적상 유효하지 않다.

주어진 요소에 대한 유효 특성, 따라서 상태 및 속성 매핑은 애니메이션 절에 설명된 선언적 애니메이션의 영향을 받을 수 있다.

7. 추가 계산이 필요한 특수 처리

7.1 이름과 설명

접근 가능한 이름 또는 접근 가능한 설명을 계산할 때, 사용자 에이전트MUST Accessible Name and Description 명세 [ACCNAME-AAM]의 텍스트 대체물 계산이라는 제목의 절에 적합해야 하며, SVG 호스트 언어에 대해서는 다음 수정 사항을 적용한다:

  1. 숨겨졌지만 참조되지 않음:을 다음으로 대체한다:
    현재 노드 순회가 aria-labelledby 또는 aria-describedby 참조를 따른 결과가 아니고, 현재 노드가 접근성 트리에서 요소 제외하기접근성 트리에 요소 포함하기의 규칙에 따라 접근성 트리에 포함되지 않는다면, 빈 문자열을 반환한다.
  2. 2D 단계를 다음으로 대체한다:

    그렇지 않고, 접근 가능한 이름에 대한 텍스트 대체물 계산을 수행하는 경우:

    • 현재 노드에 직접 자식 title 요소가 하나 이상 있으면, SVG 명세의 언어 규칙에 따라 적절한 title을 선택하고, title 텍스트 대체물을 평탄한 문자열로 반환한다.
    • 현재 노드가 링크이고, 자식 title 요소는 없지만 xlink:title 특성이 있으면, 그 특성 값을 반환한다.

    접근 가능한 설명에 대한 텍스트 대체물 계산을 수행하는 경우:

    • 현재 노드에 직접 자식 desc 요소가 하나 이상 있으면, SVG 명세의 언어 규칙에 따라 적절한 description을 선택하고, 해당 설명의 연결된 텍스트 콘텐츠를 반환한다.
  3. 2F 단계에서, iii 단계를 다음을 대체하여 수정한다:

    현재 노드의 각 자식 노드에 대해:

    다음으로

    요소가 텍스트 컨테이너 요소인 경우, 현재 노드의 각 자식 노드에 대해:

  4. 2H 단계를 다음으로 대체한다:

    그렇지 않고, 접근 가능한 설명에 대한 텍스트 대체물 계산을 수행하고 있으며, 현재 노드에 직접 자식 title 요소가 하나 이상 있지만, 해당 title 요소들이 노드의 접근 가능한 이름을 생성할 때 사용되지 않았다면, SVG 명세의 언어 규칙에 따라 적절한 title을 선택하고, title 텍스트 콘텐츠를 설명으로 반환한다.

    그렇지 않고, 현재 노드가 링크이며 접근 가능한 이름에 사용되지 않은 xlink:title 특성이 있으면, 그 특성 값을 반환한다.

요소에 직접 자식 요소가 있는지 판단할 때에는, 부모 요소에 연관된 그림자 트리가 있는지 여부와 관계없이 실제 DOM 자식 요소만 고려한다.

참고

이러한 변경의 순효과는 접근 가능한 이름에 대한 대체 텍스트 값의 다음 우선순위를 확립하는 것이다:

  1. aria-labelledby
  2. aria-label
  3. 직접 자식 title 요소
  4. 링크의 xlink:title 특성
  5. 텍스트 컨테이너 요소의 경우, 텍스트 콘텐츠

접근 가능한 설명에 대한 대체 텍스트 값은 다음 우선순위를 갖는다:

  1. aria-describedby
  2. 직접 자식 desc 요소
  3. 텍스트 컨테이너 요소의 경우, 텍스트 콘텐츠
  4. ARIA 레이블 특성이 접근 가능한 이름을 제공하는 데 사용될 때 툴팁을 제공하는 직접 자식 title 요소
  5. 접근 가능한 이름을 제공하는 데 사용되지 않은 경우, 링크의 xlink:title 특성

aria-labelledbyaria-describedby 속성은, 다른 텍스트 대체물 중 하나를 별도 요소의 텍스트와 연결하기 위해 해당 속성이 지정된 요소 자체를 참조할 수 있다.

7.2 위젯 값

SVG 사용자 에이전트는 Core Accessibility API Mappings [CORE-AAM]의 위젯 값 접근성 API 계산 요구 사항에 MUST 적합해야 한다.

7.3 관계

SVG 사용자 에이전트는 Core Accessibility API Mappings [CORE-AAM]의 관계 접근성 API 계산 요구 사항에 MUST 적합해야 한다.

이슈

관계에 관한 CORE-AAM 절은 보조 기술이 aria-describedby가 참조하는 구조화된 콘텐츠로(그리고 그 내부로) 탐색할 수 있는 방법을 제공해야 SHOULD 한다고 요구한다. 이는 렌더링되지 않는 설명 콘텐츠를 접근성 트리에 포함하지 않는 현재 접근 방식과 충돌한다.

해당 명세의 이슈 논의SVG desc 콘텐츠 노출에 관한 관련 이슈를 보라.

7.4 그룹 위치

SVG 사용자 에이전트는 Core Accessibility API Mappings [CORE-AAM]의 그룹 위치 접근성 API 계산 요구 사항에 MUST 적합해야 한다.

7.5 Use-Element 그림자 트리

이 명세는 DOM 표준 [DOM]에서 정의한 그림자 트리호스트 용어와, SVG 2 [SVG2]에서 정의한 use-element 그림자 트리요소 인스턴스 용어를 사용한다.

SVG 사용자 에이전트는 use-element 그림자 트리를 위해 생성된 요소 인스턴스를, 다음 조건에 따라 해당 요소들이 use 요소 자체의 자식인 것처럼 처리해야 MUST 한다:

이슈 7: use-element 동작을 다른 그림자 DOM 동작과 조화시키기 ARIA WG 의견 필요구현자 의견 필요

편집자는 이 지침을 웹 컴포넌트에서처럼 그림자 트리 요소에 대한 일반적인 WAI-ARIA 처리 규칙과 조화시키는 작업을 할 것이다. 이러한 방식으로 IDREF 일치를 캡슐화하는 실제 가능성에 대해 구현자의 피드백을 요청한다.

그림자 DOM과 ARIA에 대한 일반 피드백은 Core-AAM 이슈에서 논의해야 한다. SVG에 고유한 피드백은 이 명세의 이슈 #7에 제출할 수 있다.

7.6 SVG

SVG는 작성자가 문서의 특정 를 지정할 수 있는 수단을 제공한다. 뷰는 문서 URL의 대상 프래그먼트를 통해 적용되며, 이는 view 요소의 id를 참조하거나, SVG 뷰 명세 프래그먼트 식별자를 사용하여 사용자 지정 뷰를 지정함으로써 이루어진다.

SVG 뷰의 시각적 효과는 (view 요소의 경우) 부모 svg 요소 또는 (SVG 뷰 명세 프래그먼트의 경우) 루트 요소의 특성을 수정하는 것과 동등하다. 따라서 사용자 에이전트는 뷰가 유효할 때 해당 svg를 나타내는 접근 가능한 객체를 수정해야 SHOULD 한다.

특히, 다음 변경이 이루어져야 한다:

SVG 뷰 명세 또는 view 요소의 id를 포함하는 URL을 향한 내비게이션 동작은 대상 svg 요소에 대한 일련의 속성 변경 이벤트 뒤에 해당 요소로의 내비게이션이 이어지는 것으로 처리되어야 SHOULD 한다. 사용자 에이전트는 속성 변경을 기존 노드의 삭제와 수정된 노드의 삽입으로 표현할 수 MAY 있다.

이슈 8: SVG 뷰 동작 및 viewTarget을 접근성 API에 노출하기 구현자 의견 필요

SVG 뷰는 HTML 문서에는 직접적인 동등물이 없는 SVG 고유 기능을 제공한다. 이는 내비게이션 동작의 끝점으로 사용될 수 있지만, targeted 콘텐츠를 위한 컨테이너 자체는 아니다. 또한 SVG 문서가 임베드되는 시점에 파일의 일부만 시각적 콘텐츠로 포함하도록 부분집합화하는 데 사용될 수도 있다.

편집자는 위 요구 사항이 충분한지 판단할 수 있도록 실제로 사용 중인 SVG 뷰의 실용적인 예시에 매우 관심이 있다. 고려해야 할 특정 이슈에는 키보드 포커스 관리에 특수 규칙이 필요한지, 또는 뷰가 유효할 때 화면 밖에 렌더링되는 콘텐츠를 제외하는 데 특수 규칙이 필요한지 여부가 포함된다.

또한 viewTarget 특성과 SVG 뷰 프래그먼트에 대응하는 매개변수는 SVG 2에서 폐기되었다. 대상 요소의 시각적 스타일 변경을 트리거하려는 의도된 사용은 사용자 에이전트에서 제대로 구현된 적이 없다. viewTarget이 없으면, 특정 뷰의 의미적 대상을 나타내는 네이티브 방식이 SVG에는 없게 된다. view 요소(뷰 프래그먼트는 제외)의 경우, 가능한 대안은 작성자가 aria-flowsto 특성을 직접 지정하도록 권장하는 것이다. 그러면 이러한 특성을 관련 svg 요소에 매핑해야 한다.

이는 뷰가 유효한 동안 다른(또는 모든) ARIA 특성도 view 요소에서 svg 요소의 접근 가능한 객체로 매핑해야 하는지라는 질문을 제기한다. 이는 가능한 모든 결과와 충돌을 신중히 고려해야 한다. 예를 들어, 뷰가 SVG 요소의 역할을 변경할 수 있어야 하는가?

aria-flowsto 특성은 보조 도구에서 잘 지원되지 않는다. 향후 버전에서 이를 폐기하자는 제안이 있었다. 보조 기술 사용자가 그래픽의 어떤 부분이 보이는지 빠르게 이해할 수 있도록, 사용자 에이전트가 변경된 뷰를 노출할 수 있는 다른 방법이 있는가?

이러한 사항에 대한 피드백은 이슈 #8에서 제공할 수 있다.

7.7 선언적 애니메이션

SVG 애니메이션 요소는 요소 특성과 스타일 속성을 수정할 수 있다. CSS 애니메이션은 스타일 속성을 수정할 수 있다. 어느 유형의 애니메이션이든 사용자 상호작용에 의해 트리거되거나, 고정된 일정에 따라 실행될 수 있다.

애니메이션이 WAI-ARIA 상태 또는 속성 특성의 유효값, 또는 상태 및 속성 매핑 절에 설명된 SVG 특성을 변경하는 경우, 사용자 에이전트는 실제 특성 값이 변경된 것과 같은 방식으로 그 변경을 노출해야 MUST 한다.

참고

role 특성은 애니메이션 가능하지 않다.

애니메이션된 변경이 요소가 렌더링되는지 여부에 영향을 주거나, 요소가 접근성 트리에서 제외되도록 만들 방식으로 요소의 가시성을 변경하는 경우, 사용자 에이전트는 Core Accessibility API Mappings [CORE-AAM]의 문서 콘텐츠 또는 노드 가시성의 변경 절에 있는 지침에 따라 그 변경을 노출해야 SHOULD 한다.

8. 동작

SVG 사용자 에이전트는 Core Accessibility API Mappings [CORE-AAM]의 동작 접근성 API 계산 요구 사항에 MUST 적합해야 한다.

9. 이벤트

사용자 에이전트는 사용자 동작, WAI-ARIA 상태 변경, 문서 콘텐츠 또는 노드 가시성의 변경, 선택 변경 및 메뉴 작동에 대해 이벤트를 발생시킨다. 적합한 사용자 에이전트는 [CORE-AAM] 이벤트 매핑을 지원해야 MUST 한다.

10. 특수 문서 처리 절차

SVG 사용자 에이전트는 Core Accessibility API Mappings [CORE-AAM]의 특수 문서 처리 절차MUST 적합해야 한다.

11. 보안 및 개인정보 보호 고려 사항

이 명세의 구현은 SVG ([SVG2])와 WAI-ARIA ([WAI-ARIA])를 각각 구현하는 것과 비교하여 웹 플랫폼에 새로운 보안 또는 개인정보 보호 고려 사항을 추가할 것으로 예상되지 않는다.

편집자 참고

이 명세로 인해 잠재적인 새로운 보안 또는 개인정보 보호 위험이 생긴다고 생각한다면, 명세의 GitHub 저장소에서 이슈를 제기하라.

A. 부록

A.1 감사의 말

이 절은 비규범적이다.

공로가 명시된 저자와 편집자 외에도, SVG 접근성 태스크 포스 참가자들이 이 문서의 개발에 기여했다. 초안에 대한 피드백을 제공하고 테스트를 도운 Joanmarie Diggs 및 다른 구현자들에게도 감사를 표한다.

A.1.1 공개 시점의 ARIA WG 참가자

  • Rahim Abdi (Apple Inc.)
  • NAVYA AGARWAL (Adobe)
  • Joey Arhar (Google LLC)
  • Benjamin Beaudry (Microsoft Corporation)
  • Curt Bellew (Oracle Corporation)
  • Zoë Bijl (W3C 초청 전문가)
  • Gautier Chomel (EDRLab)
  • Aleksandar Cindrikj (Netcetera)
  • Keith Cirkel (Mozilla Foundation)
  • Daniel Clark (Microsoft Corporation)
  • Sydney Coleman (Google LLC)
  • James Craig (Apple Inc.)
  • Chris Cuellar (Bocoup)
  • Diego Della Rossa (UsableNet)
  • Joanmarie Diggs (Igalia)
  • Tamsin Ewing (W3C)
  • Mayuri Faldu (Navy Federal Credit Union)
  • Betsy Fanning (PDF Association)
  • Steve Faulkner (TetraLogical Services Ltd)
  • Patrick Foster (axes4 GmbH)
  • Jane Fulton (Cisco)
  • Bryan Garaventa (W3C 초청 전문가)
  • Matt Garrish (DAISY Consortium)
  • Doug Geoffray (Microsoft Corporation)
  • Ariella Gilmore (IBM Corporation)
  • Taylore Givens (Microsoft Corporation)
  • David Grogan (Google LLC)
  • Shirisha Gubba (Google LLC)
  • Jon Gunderson (University of Illinois)
  • Oliver Habersetzer (SAP SE)
  • Sunny Hardasani (Adobe)
  • Matthew Hardy (Adobe)
  • Chris Harrelson (Google LLC)
  • Sarah Higley (Microsoft Corporation)
  • Hans Hillen (TPGi)
  • Isabel Holdsworth (TPGi)
  • Stanley Hon (Microsoft Corporation)
  • Michael Jackson (Microsoft Corporation)
  • Jilin Jiang (Ant Group Co., Ltd.)
  • Duff Johnson (PDF Association)
  • Summer Jones (Thomson Reuters Corp.)
  • Yuki Kamahori (Cybozu)
  • William Kilian (Kilian Codes LLC)
  • Matthew King (Meta)
  • Zachary Kinsey (TargetStream Technologies)
  • Daisuke Kobayashi (Cybozu)
  • Peter Krautzberger (krautzource UG)
  • Nina Krauß (SAP SE)
  • JaEun Jemma Ku (University of Illinois)
  • Joe Lamyman (TetraLogical Services Ltd)
  • Christopher Land (Oracle Corporation)
  • Charles LaPierre (Benetech)
  • Patrick Lauke (TetraLogical Services Ltd)
  • Philip Lazarevic (Level Access)
  • Leo Lee (Microsoft Corporation)
  • Brett Lewis (TPGi)
  • Alison Maher (Microsoft Corporation)
  • Gurpreet Kaur Mangera (Rakuten Group, Inc.)
  • Mark McCarthy (University of Illinois)
  • Eduardo Meza Etienne (Navy Federal Credit Union)
  • Clay Miller (Microsoft Corporation)
  • Hirotaka Minamida (Cybozu)
  • Daniel Montalvo (W3C)
  • Baldino Morelli (UsableNet)
  • Jacques Newman (Microsoft Corporation)
  • James Nurthen (Evinced Inc.)
  • Scott O'Hara (Microsoft Corporation)
  • Lola Odelola (W3C 초청 전문가)
  • Neil Osman (Evinced Inc.)
  • Yusuke Oyama (Cybozu)
  • Adam Page (Hilton)
  • Michael Pennisi (Bocoup)
  • Giacomo Petri (UsableNet)
  • Noah Praskins (TPGi)
  • Lucas Radaelli (Google LLC)
  • Paul Rayius (PDFix-US)
  • Mark Rogers (Powermapper Software)
  • Priti Rohra (BarrierBreak Solutions Private Limited)
  • Adrian Roselli (W3C 초청 전문가)
  • Marco Sabidussi (UsableNet)
  • Trisha Salas (Level Access)
  • Stefan Schnabel (SAP SE)
  • Harris Schneiderman (Deque Systems, Inc.)
  • Raymond Schwartz (Navy Federal Credit Union)
  • Davis Shaver (The Washington Post)
  • Cynthia Shelly (W3C 초청 전문가)
  • Tzviya Siegman (W3C)
  • Avneesh Singh (DAISY Consortium)
  • Michael[tm] Smith (sideshowbarker) (W3C)
  • Francis Storr (Intel Corporation)
  • Nobukiyo Sugisaki (Cybozu)
  • Melanie Sumner (IBM Corporation)
  • Alexander Surkov (Igalia)
  • James Teh (Mozilla Foundation)
  • Roman Toda (Foxit software)
  • David Tseng (Google LLC)
  • Cybozu W3C (Cybozu)
  • Jan Williams (TPGi)
  • Peter Wyatt (PDF Association)
  • Valerie Young (Igalia)

A.1.2 SVG 접근성 태스크 포스의 이전 참가자

  • Amelia Bellamy-Royds
  • Michael Cooper (W3C)
  • Erik Dahlström (Opera)
  • Amy Dai (Oracle Corporation)
  • Fred Esch (IBM Corporation)
  • Charles McCathie Nevile (Yandex)
  • Cameron McCormack (Mozilla Foundation)
  • Brian McNeily (SSB BART Group)
  • Heather Migliorisi
  • Charu Pandhi (IBM Corporation)
  • Janina Sajka
  • Doug Schepers (W3C)
  • Rich Schwerdtfeger (Knowbility)
  • Léonie Watson (The Paciello Group, LLC)
  • Jason White (Educational Testing Service)

A.1.3 지원 기금 제공자

이 공개 문서는 미국 교육부 산하 국립 장애, 독립생활 및 재활 연구소(NIDILRR)의 미국 연방 자금으로 일부 지원을 받아 제작되었으며, 처음에는 계약 번호 ED-OSE-10-C-0067에 따라, 이후에는 계약 번호 HHSP23301500054C에 따라, 현재는 HHS75P00120P00168에 따라 지원되었다. 이 공개 문서의 내용이 반드시 미국 교육부의 견해나 정책을 반영하는 것은 아니며, 상호, 상업적 제품 또는 조직의 언급이 미국 정부의 보증을 의미하지도 않는다.

A.2 이슈 요약

B. 참고 문헌

B.1 규범적 참고 문헌

[ACCNAME-AAM]
Accessible Name and Description Computation 1.1. Joanmarie Diggs; Bryan Garaventa; Michael Cooper. W3C. 2018년 12월 18일. W3C 권고안. URL: https://www.w3.org/TR/accname-1.1/
[CORE-AAM]
Core Accessibility API Mappings 1.1. Joanmarie Diggs; Joseph Scheuhammer; Richard Schwerdtfeger; Michael Cooper; Andi Snow-Weaver; Aaron Leventhal. W3C. 2017년 12월 14일. W3C 권고안. URL: https://www.w3.org/TR/core-aam-1.1/
[CSS-CASCADE-3]
CSS Cascading and Inheritance Level 3. Elika Etemad; Tab Atkins Jr. W3C. 2021년 2월 11일. W3C 권고안. URL: https://www.w3.org/TR/css-cascade-3/
[DOM]
DOM Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://dom.spec.whatwg.org/
[GRAPHICS-AAM]
Graphics Accessibility API Mappings. Amelia Bellamy-Royds; Joanmarie Diggs; Michael Cooper. W3C. 2018년 10월 2일. W3C 권고안. URL: https://www.w3.org/TR/graphics-aam-1.0/
[HTML-AAM]
HTML Accessibility API Mappings 1.0. Scott O'Hara; Rahim Abdi. W3C. 2026년 4월 24일. W3C 작업 초안. URL: https://www.w3.org/TR/html-aam-1.0/
[infra]
Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. Living Standard. URL: https://infra.spec.whatwg.org/
[rfc2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. 1997년 3월. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. 2017년 5월. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
[SVG1]
Scalable Vector Graphics (SVG) 1.0 Specification. Jon Ferraiolo. W3C. 2001년 9월 4일. W3C 권고안. URL: https://www.w3.org/TR/SVG/
[SVG11]
Scalable Vector Graphics (SVG) 1.1 (Second Edition). Erik Dahlström; Patrick Dengler; Anthony Grasso; Chris Lilley; Cameron McCormack; Doug Schepers; Jonathan Watt; Jon Ferraiolo; Jun Fujisawa; Dean Jackson et al. W3C. 2011년 8월 16일. W3C 권고안. URL: https://www.w3.org/TR/SVG11/
[SVG2]
Scalable Vector Graphics (SVG) 2. Amelia Bellamy-Royds; Bogdan Brinza; Chris Lilley; Dirk Schulze; David Storey; Eric Willigers. W3C. 2018년 10월 4일. W3C 후보 권고안. URL: https://www.w3.org/TR/SVG2/
[WAI-ARIA]
Accessible Rich Internet Applications (WAI-ARIA) 1.1. Joanmarie Diggs; Shane McCarron; Michael Cooper; Richard Schwerdtfeger; James Craig. W3C. 2017년 12월 14일. W3C 권고안. URL: https://www.w3.org/TR/wai-aria-1.1/

B.2 정보성 참고 문헌

[accname]
Accessible Name and Description Computation 1.1. Joanmarie Diggs; Bryan Garaventa; Michael Cooper. W3C. 2018년 12월 18일. W3C 권고안. URL: https://www.w3.org/TR/accname-1.1/
[AT-SPI]
Assistive Technology Service Provider Interface. The GNOME Project. URL: https://gnome.pages.gitlab.gnome.org/at-spi2-core/libatspi/
[ATK]
ATK - Accessibility Toolkit. The GNOME Project. URL: https://developer.gnome.org/atk/stable/
[AXAPI]
The NSAccessibility Protocol for macOS. Apple, Inc. URL: https://developer.apple.com/documentation/appkit/nsaccessibility
[GRAPHICS-ARIA]
WAI-ARIA Graphics Module. Amelia Bellamy-Royds; Joanmarie Diggs; Michael Cooper. W3C. 2018년 10월 2일. W3C 권고안. URL: https://www.w3.org/TR/graphics-aria-1.0/
[IAccessible2]
IAccessible2. Linux Foundation. URL: https://wiki.linuxfoundation.org/accessibility/iaccessible2/
[MSAA]
Microsoft Active Accessibility (MSAA). Microsoft Corporation. URL: https://docs.microsoft.com/en-us/windows/win32/winauto/microsoft-active-accessibility
[UI-AUTOMATION]
UI Automation. Microsoft Corporation. URL: https://docs.microsoft.com/en-us/windows/win32/winauto/ui-automation-specification
[WAI-ARIA-10]
Accessible Rich Internet Applications (WAI-ARIA) 1.0. James Craig; Michael Cooper et al. W3C. 2014년 3월 20일. W3C 권고안. URL: https://www.w3.org/TR/wai-aria/