한국형 웹콘텐츠 접근성 지침의 검사항목 중 헤딩과 관련된 항목이 있다.

2.4.2(제목 제공) 페이지, 프레임, 콘텐츠 블록에는 적절한 제목을 제공해야 한다.

검사항목을 준수하고 페이지를 구조적으로 마크업하기 위해 콘텐츠 블럭의 제목으로 헤딩(heading)을 많이 제공하고 있다. 제공된 헤딩 정보는 화면낭독기를 이용하는 사용자가 웹페이지의 구조를 파악하고 페이지를 빠르게 탐색하는데 매우 효과적으로 이용된다.

우선 헤딩의 존재만으로 콘텐츠 블럭을 구분하는 효과가 있다. 시각장애인은 한번에 하나의 요소에만 접근할 수 있기 때문에 전체적인 구조와 맥락을 파악하는 것이 쉽지 않다. 이 때 헤딩정보가 요소와 요소를 구분하고 단락을 구분하고 묶어 줄 수 있는 정보로 활용된다.
또한 헤딩의 숫자는 콘텐츠의 포함관계와 계층구조를 이해할 수 있게 한다. h1은 로고, h2는 메뉴, h3은 콘텐츠영역의 제목 등 일반적으로 많이 사용되는 헤딩숫자에 대한 구조적인 의미를 이해할 수 있고, h2가 나오다가 h3이 나온 경우 하위에 포함된 콘텐츠로 계층구조를 인지할 수 있다.

다들 이렇게 알고 있지만 실제로 화면낭독기가 헤딩을 어떻게 음성출력하는지 알고 있는 사람은 많지 않다

헤딩에 많이 사용되는 텍스트, 이미지, 텍스트링크, 이미지링크를 조합해서 화면낭독기가 어떻게 읽어주고 있는지 확인해보자

 

테스트환경

Windows 7 32bit / Internet Explorer 8
센스리더 3.2.2.0
센스리더 4.0 beta4
JAWS 13 한글
JAWS 15 영문
NVDA development 10114

헤딩 테스트 샘플 페이지

http://haeppa.kr/test/heading201406.html

헤딩정보 탐색에 이용되는 화면낭독기 기능키

기능 센스리더 3.2.2.0 센스리더 4.0 beta4 JAWS 13
한글
JAWS 15
영문
NVDA development 10114
헤딩단위 이동 Ctrl+F6
Ctrl+Shift+F6
H
Shift+H
H
Shift+H
H
Shift+H
H
Shift+H
헤딩 레벨단위 이동 none 1~6
Shift+1~6
1~6
Shift+1~6
1~6
Shift+1~6
1~6
Shift+1~6
헤딩 목록 none none Insert+F6 Insert+F6 Insert+F7

※ 헤딩레벨 단위 이동기능은 헤딩레벨에 해당하는 숫자(1~6)를 직접 눌러서 이동합니다.
※ JAWS 는 헤당레벨 단위 이동기능 사용시 section, landmark role, frame 등의 영향을 받아 이동 범위가 제한되지만 센스리더와 NVDA는 페이지내의 모든 헤딩으로 레벨단위 이동을 사용할 수 있습니다.

 

 

화면낭독기의 헤딩 음성출력 결과

아래 테스트 결과는 헤딩단위, 헤딩레벨단위 이동기능을 사용하지 않고 위/아래 방향키만 눌러서 페이지를 탐색하고 그 결과를 정리한 것입니다. 헤딩단위 이동기능 사용시 각 화면낭독기 마다 헤딩 속 요소에 대한 음성출력 방식이 매우 다르기 때문에 헤딩에 대한 지원여부를 직관적으로 확인하기 어려운 점을 감안한 것입니다.

 

1. 헤딩 기본 스타일

HTML
<h3>뽀로로</h3>
<h3><a href="poro.jpg">뽀로로</a></h3>
<h3><img src="poro.jpg" alt="뽀로로" /></h3>
<h3><a href="poro2.jpg"><img src="poro.jpg" alt="뽀로로" /></a></h3>

헤딩 기본 스타일 음성출력 내용
화면낭독기 종류 음성출력 내용 비고
센스리더 3.2.2.0 뽀로로 헤딩3
뽀로로 헤딩3 링크
헤딩3 *1
뽀로로 이미지
뽀로로 헤딩3 그래픽링크
*1) 헤딩에 이미지가 있음녀 헤딩과 이미지를 분리
센스리더 4.0 beta4 뽀로로 헤딩3
뽀로로 헤딩3 링크
뽀로로 헤딩3 그래픽 링크 *1
뽀로로 헤딩3 그래픽 링크
*1) 이미지를 그래픽링크로 음성출력하는 버그 (추정)
JAWS 13 한글 헤딩레벨3 뽀로로
헤딩레벨3 링크 뽀로로
헤딩레벨3 그래픽 뽀로로
헤딩레벨3 링크 그래픽 뽀로로
none
JAWS 15 영문 헤딩레벨3 뽀로로
헤딩레벨3 링크 뽀로로
헤딩레벨3 그래픽 뽀로로
헤딩레벨3 링크 그래픽 뽀로로
none
NVDA
development 10114
헤딩레벨3 뽀로로
헤딩레벨3 링크 뽀로로
헤딩레벨3 그래픽 뽀로로
헤딩레벨3 링크 그래픽 뽀로로
none

 

2. 헤딩 속 링크와 텍스트가 2개

HTML
<h3><a href="poro.jpg">뽀로로</a>크롱이</h3>
<h3><a href="poro.jpg">뽀로로</a><a href="krong.jpg">크롱이</a></h3>

헤딩 속 링크와 텍스트 음성출력 내용
화면낭독기 종류 음성출력 내용 비고
센스리더 3.2.2.0 뽀로로 헤딩3 링크
크롱이 *1
뽀로로 헤딩3 링크
크롱이 링크 *1
*1) 헤딩으로 묶어도 링크와 텍스트가 분리되어 헤딩 정보를 알 수 없음
센스리더 4.0 beta4 뽀로로 헤딩3 링크
크롱이 *1
뽀로로 헤딩3 링크
크롱이 링크 *1
*1) 헤딩으로 묶어도 링크와 텍스트가 분리되어 헤딩 정보를 알 수 없음
JAWS 13 한글 헤딩레벨3 링크 뽀로로
헤딩레벨3 크롱이
헤딩레벨3 링크 뽀로로
헤딩레벨3 링크 크롱이
none
JAWS 15 영문 헤딩레벨3 링크 뽀로로
헤딩레벨3 크롱이
헤딩레벨3 링크 뽀로로
헤딩레벨3 링크 크롱이
none
NVDA
development 10114
헤딩레벨3 링크 뽀로로 크롱이
헤딩레벨3 링크 뽀로로 링크 크롱이
none

 

3. 헤딩 속 이미지와 텍스트가 2개

HTML
<h3><img src="poro.jpg" alt="뽀로로" />크롱이</h3>
<h3><img src="poro.jpg" alt="뽀로로" /><img src="krong.jpg" alt="크롱이" /></h3>
<h3><img src="krong.jpg" alt="크롱이" /><img src="poro.jpg" alt="뽀로로" /></h3>

헤딩 속 이미지와 텍스트 음성출력 내용
화면낭독기 종류 음성출력 내용 비고
센스리더 3.2.2.0 헤딩3 *1
뽀로로 이미지
크롱이 *2
헤딩3 *1
뽀로로 이미지
크롱이 이미지 *2
헤딩3 *1
크롱이 이미지
뽀로로 이미지 *2
*1) 헤딩에 이미지가 있으면 헤딩과 이미지를 분리
*2) 헤딩으로 묶어도 요소가 모두 분리되어 헤딩 정보를 알 수 없음
센스리더 4.0 beta4 뽀로로 헤딩3 그래픽링크 *1*2
크롱이 헤딩3 그래픽링크 *1*3
뽀로로 헤딩3 그래픽링크 *1*3
*1) 이미지를 그래픽링크로 음성출력하는 버그 (추정)
*2) 텍스트정보가 누락됨
*3) 헤딩 안에 이미지가 2개인 경우 마지막 이미지만 음성출력
JAWS 13 한글 헤딩레벨3 그래픽 뽀로로
헤딩레벨3 크롱이
헤딩레벨3 그래픽 뽀로로
헤딩레벨3 그래픽 크롱이
헤딩레벨3 그래픽 크롱이
헤딩레벨3 그래픽 뽀로로
none
JAWS 15 영문 헤딩레벨3 그래픽 뽀로로
헤딩레벨3 크롱이
헤딩레벨3 그래픽 뽀로로
헤딩레벨3 그래픽 크롱이
헤딩레벨3 그래픽 크롱이
헤딩레벨3 그래픽 뽀로로
none
NVDA
development 10114
헤딩레벨3 그래픽 뽀로로 크롱이
헤딩레벨3 그래픽 뽀로로 그래픽 크롱이
헤딩레벨3 그래픽 크롱이 그래픽 뽀로로
none

 

 

4. 헤딩 속 이미지와 링크가 2개

HTML
<h3><img src="poro.jpg" alt="뽀로로" /><a href="krong.jpg">크롱이</a></h3>
<h3><img src="poro.jpg" alt="뽀로로" /><a href="poro.jpg"><img src="krong.jpg" alt="크롱이" /></a></h3>
<h3><a href="poro.jpg"><img src="poro.jpg" alt="뽀로로" /></a><a href="krong.jpg"><img src="krong.jpg" alt="크롱이" /></a></h3>

헤딩 속 이미지와 링크 음성출력 내용
화면낭독기 종류 음성출력 내용 비고
센스리더 3.2.2.0 헤딩3 *1
뽀로로 이미지
크롱이 링크 *2
헤딩3 *1
뽀로로 이미지
크롱이 그래픽링크 *2
뽀로로 헤딩3 그래픽링크
크롱이 그래픽링크 *2
*1) 헤딩에 이미지가 있으면 헤딩과 이미지를 분리
*2) 헤딩으로 묶어도 요소가 모두 분리되어 헤딩 정보를 알 수 없음
센스리더 4.0 beta4 뽀로로 헤딩3 그래픽링크
크롱이 링크 *1
뽀로로 헤딩3 그래픽링크
크롱이 그래픽링크 *1
뽀로로 헤딩3 그래픽링크
크롱이 그래픽링크 *1
*1) 헤딩으로 묶어도 요소가 모두 분리되어 헤딩 정보를 알 수 없음
JAWS 13 한글 헤딩레벨3 그래픽 뽀로로
헤딩레벨3 링크 크롱이
헤딩레벨3 그래픽 뽀로로
헤딩레벨3 링크 그래픽 크롱이
헤딩레벨3 링크 그래픽 뽀로로
헤딩레벨3 링크 그래픽 크롱이
none
JAWS 15 영문 헤딩레벨3 그래픽 뽀로로
헤딩레벨3 링크 크롱이
헤딩레벨3 그래픽 뽀로로
헤딩레벨3 링크 그래픽 크롱이
헤딩레벨3 링크 그래픽 뽀로로
헤딩레벨3 링크 그래픽 크롱이
none
NVDA
development 10114
헤딩레벨3 그래픽 뽀로로 링크 크롱이
헤딩레벨3 그래픽 뽀로로 링크 그래픽 크롱이
헤딩레벨3 링크 그래픽 뽀로로 링크 그래픽 크롱이
none

 

정리하자면…

  • JAWS 13 한글과 15 영문은 음성출력에 차이가 없음
  • NVDA, JAWS는 헤딩정보와 요소의 누락이 없음
  • 센스리더 3.2.2.0은
    • 이미지와 헤딩이 분리되어 헤딩정보 불확실
    • 헤딩 속 이미지, 링크, 텍스트가 2개 이상 있으면 서로 분리되고 헤딩정보가 누락
  • 센스리더 4.0 beta4는
    • “헤딩x 이미지”를 “헤딩x 그래픽링크”로 음성출력하는 버그
    • 헤딩 속 이미지, 링크, 텍스트가 2개 이상 있으면 서로 분리되고 헤딩정보가 누락
    • 헤딩 속 이미지와 텍스트가 있으면 텍스트 누락
    • 헤딩 속 이미지가 2개 있으면 첫번째 이미지 정보 누락
  • NVDA는 2,3,4 샘플에서 화면레이아웃모드 사용으로 모든 요소를 한 번에 음성출력하고 있으나 좌/우 방향키를 눌러 확인하면 요소의 시작/끝을 알 수 있어 문제되지 않음

 

추가, 헤딩 / 헤딩레벨 단위 이동기능의 차이

HTML

<h1>제목1</h1> 
<h3>내용1-1</h3>
<h3>내용1-2</h3>
<h1>제목2</h1>
<h3>내용2-1</h3>
<h3>내용2-2</h3>
<h1>제목3</h1>
<h3>내용3-1</h3>
<h3>내용3-2</h3>

위와 같은 구성된 경우 헤딩단위 이동기능을 이용하면

제목1 헤딩1
내용1-1 헤딩3
내용1-2 헤딩3
제목2 헤딩1
내용2-1 헤딩3
내용2-2 헤딩3
…..

위와 같이 모든 헤딩을 읽으면서 페이지를 탐색합니다.
하지만 헤딩레벨 단위 이동기능은 약간 다릅니다.

숫자 1만 누르면

제목1 헤딩1
제목2 헤딩1
제목3 헤딩1

숫자3만 누르면

내용1-1 헤딩3
내용1-2 헤딩3
내용2-1 헤딩3
내용2-2 헤딩3
……

위와 같은 형태로 숫자에 해당하는 레벨의 헤딩만 읽으면서 페이지를 탐색하게 됩니다. 페이지 구성에 따라 헤딩레벨단위 이동기능을 잘 활용한다면 효과적인 페이지 탐색이 가능합니다.

2014/06/15 21:47 2014/06/15 21:47
해빠 이 작성.

최근 센스리더(www.xvtech.com)는 4.0 beta 를 공개하고 베타테스트를 진행했습니다. 현재 beta4까지 공개되었고 곧 정식출시를 앞두고 있다고 합니다.
센스리더 4.0 업데이트는 Windows 8 지원이 가장 큰 키워드로 보일 수 있지만, 가상커서에서도 변화가 있었습니다. 센스리더 개발 이후 줄곧 유지하던 가상커서 체계에 큰 변화가 있었고, 복잡했던 기능키조합도 크게 바뀌었습니다.

 

가상커서 - 브라우저 탭키의 등장

기존 가상커서에서는 브라우저의 기능 및 초점이동을 센스리더가 직접 제어하는 방식으로 동작합니다. 이로인해 jQuery UI 등의 다양한 네이게이션응ㄹ 활용할 수 없고 RIA 환경에 적절하게 대응할 수 없었습니다.
센스리더가 4.0으로 업데이트 되면서 "브라우저 탭키"라는 모드를 도입하고 브라우저의 기능과 초점을 더 이상 제어하지 않아 기능변화에 약간의 기대를 걸고 있습니다.
또한 WAI-ARIA에 대한 기능개선이 진행되고 있어 해외의 화면낭독기처럼 보다 나은 RIA, WAI-ARIA 환경을 이용할 수 있을지 기대됩니다.
기존의 가상커서 체계는 “가상커서 탭키”라는 명칭으로 병행 운용된다고 합니다.

 

입력모드와 기능키모드

브라우저 탭키에서는 입력모드와 기능키모드가 존재합니다.
입력모드는 편집창에서 텍스트를 입력하는 상태를 말하고 기능키모드는 이동기능키(H, F, I 등)를 눌러 콘텐츠를 탐색하는 상태를 말합니다.
이동기능(Tab, F2)으로 편집창을 만나게 되면 바로 "입력모드"로 변경되며 글자를 입력할 수 있습니다. 여기에서 다른 요소로 이동하기 위해 기존 3.x 버전의 방식대로 바로 이동기능 H(헤딩이동)키를 누르게 되면 초점이 이동되지 않고 텍스트가 입력됩니다.
이런 상황에서는 Tab키나 ESC키를 눌러 기능키모드로 전환하하고 페이지 탐색을 진행하면 됩니다.

 

가상커서 설정의 기본값 변경

센스리더 4.0 beta4 기준으로 가상커서 설정의 기본값 중 아래 두 항목이 변경되었습니다.

  • 자동포커스 = 선택
  • 숨긴내용읽기 = 해제

자동포커스는 브라우저의 초점표시에 대한 옵션으로 onfocus 이벤트와 관련이 있고,
숨긴내용읽기는 display:none, visibility:hidden, aria-hidden 스타일의 음성출력과 관계가 있습니다.

 

가상커서 기능키 변화

내용 중 "-" 는 기능키 없음, 빈칸은 변경사항 없음을 의미합니다.

 

1. 기본기능

 

센스리더 3.2.2.0

센스리더 4.0 bets4

비고

프로그램 실행 Ctrl+Alt+S    
프로그램종료 Insert+F4    
메뉴창 열기 Ctrl+\    
카상커서 설정 Ctrl+Shift+F9    
가상커서 사용/해제 Ctrl+Shift+F11 / F12   입력서식에서는 Enter
가상커서 임시해제 - Ctrl+↑/↓  
가상커서 즉시사용 - ESC, Tab  

 

2. 읽기기능

 

센스리더 3.2.2.0

센스리더 4.0 beta4

비고

가상커서 갱신 Ctrl+Shift+F11    
음성 중지 Ctrl    
이전/다음 글자 읽기 ← / →    
이전/다음 요소 읽기 ↑ / ↓    
자동읽기 시작/ 중지 F11 / ESC    
└ 현재 프레임만 읽기 Alt+F11    
윈도우 제목 읽기 Ctrl+Shift+T    
페이지 정보 읽기 Ctrl+F9    
입력서식 정보 읽기 Ctrl+Alt+Shift+T Ctrl+Alt+Shift+F9 입력서식의 label, title 정보 확인
음성출력내용 보기 F12   바로 이전에 음성출력된 내용 확인하기

 

3. 읽기설정 (toggle)

 

센스리더 3.2.2.0

센스리더 4.0 beta4

비고

숨김 내용읽기 설정 Ctrl+/   display:none, visibility:hidden, aria-hidden
자동포커스 설정 Ctrl+.(점)   브라우저의 쵸점표시
구두점 읽기 Alt+Shift+Z   키보드기호 읽기 설정
특수문자 읽기 Alt+Shift+' (어포스트로피)   유니코드 읽기 설정

 

4. 이동기능

 

센스리더 3.2.2.0

센스리더 4.0 beta4

비고

페이지 처음/끝 Ctrl+Home / End    
다음/이전 개체 Tab / Shift+Tab Insert+Tab
Insert+Shift+Tab
가상커서의 초점 운용 기능키
(브라우저의 초점 운용은 tab 사용)
다음/이전 텍스트 Ctrl+F4
Ctrl+Shift+F4
F4 / Shift+F4  
다음/이전 링크 Ctrl+' (어포스트로피)
Ctrl+Shift+'
L / Shift+L  
└ 다음/이전 방문한링크 Ctrl+; (새미콜론)
Ctrl+Shift+;
K / Shift+K  
└ 링크목록 Ctrl+L ; (새미콜론)  
다음/이전 헤딩 Ctrl+F6
Ctrl+Shift+F6
H / Shift+H  
└ 다음/이전 헤딩레벨 - 1~6 / Shift 1~6 해당레벨의 숫자만 입력
다음/이전 입력서식 Ctrl+F2
Ctrl+Shift+F2
N / Shift+N  
다음/이전 편집창 Ctrl+F8
Ctrl+Shift+F8
F2 / Shift+F2  
다음/이전 프레임 Ctrl+Tab
Ctrl+Shift+Tab
F / Shift+F  
└ 프레임 목록 Alt+Shift+W G  
다음/이전 랜드마크 Ctrl+Tab
Ctrl+Shift+Tab
J / Shift+J  
다음/이전 외부개체 Ctrl+F7
Ctrl+Shift+F7
E / Shift+E 플래시, 윈도우즈미디어, 실버라이트 등
다음/이전 목록 Ctrl+K
Ctrl+I
S / Shift+S  
└ 다음/이전 목록항목 - I / Shift+I  
다음/이전 폼 - R / Shift+R <form>
다음/이전 필드셋 - D / Shift+D <fieldset>

 

5. 테이블 관련 기능

 

센스리더 3.2.2.0

센스리더 4.0 beta4

비고

다음/이전 테이블 Ctrl+F3
Ctrl+Shift+F3
T / Shift+T  
구조적인 테이블탐색
(제목셀 참조)
Ctrl+Alt+
← / ↑ / ↓ / →
  테이블의 시각적인 구조에 따라 방향키로 이동
테이블 정보 Ctrl+Alt+Enter   테이블의 구조정보, 현재 셀 정보
테이블 모드 선택/해제 Ctrl+T / U   초점이 테이블을 벗어나지 않음

 

6. 찾기기능

 

센스리더 3.2.2.0

센스리더 4.0 beta4

비고

문자열 찾기 Ctrl+F    
다음/이전 결과로 이동 F3
Shift+F3
   
사용한 링크 문자열 찾기 Ctrl+~(그레이브)
Ctrl+Shift+~
  바로전에 사용한 링크의 텍스트의 문자열로 이동

 

7. 기타기능

 

센스리더 3.2.2.0

센스리더 4.0 beta4

비고

블럭지정 Alt+L B 가상커서의 텍스트
TITLE 속성값 읽기 Ctrl+Alt+Shift+T Ctrl+Alt+Shift+F9 링크나 입력서식에서 사용가능
longdesc 내용 읽기 Alt+Enter    
콘트롤 선택하기 Ctrl+↑/↓   셀렉트박스 값 조절
윈도우내용 읽기 Ctrl+Shift+W   브라우저 경고창의 내용
현재 포커스 객체 읽기 Ctrl+Shift+F    
도움말 열기 Insert+F1    
기능키 무시 Ctrl+Shift+N   브라우저의 기능키가 센스리더와 동일해서 동작이 안될 때 센스리더기능키 1회 무시

 

8. 미디어관련기능 (윈도우즈미디어)

 

센스리더 3.2.2.0

센스리더 4.0 beta4

비고

미디어 재생/정지 Ctrl+] / [ P / Shift+P  
미디어 다음/이전 탐색 Alt+] / [ ] / [ 미디어 앞/뒤 탐색
미디어 빠르게 / 느리게 Ctrl+Shift+] / [ Ctrl+] / [ 재생속도 조절
미디어 정상속도 Ctrl+Alt+] Ctrl+'(어포스트로피)  
미디어 볼륨 크게/ 작게 Alt+Shift+[ / ] Shift+[ / ]  
미디어 URL복사 Ctrl+Alt+[ U  
미디어 정보 Ctrl+Alt+Shift+] Y  
활성미디어 변경 Ctrl+Alt+Shift+[ O 재생/조절할 미디어 선택 기능
미디어 이동시간 변경 Alt+' (어포스트로피) (어포스트로피) 앞/뒤 탐색 기능에 적용

2014/06/07 04:13 2014/06/07 04:13
해빠 이 작성.