1.3.2 意味のある順序でコンテンツを表現する
適合レベル
A
※各レベルについては適合レベルとはをご覧ください
概要
レイアウトの再現を目的に、CSS等を用いてコンテンツの実装順序と表示順序を調整することがある。しかし、スクリーンリーダーは表示順序ではなく、実装順序に基づいてコンテンツを音声で読み上げる。そのため、この順序の変更が内容の理解を妨げる可能性がある。コンテンツの順序が意味を持つ場合は、その内容が正確に伝わるような順序で実装する。
また、文字間を広くするためにスペースを入れるなど、デザインを実現するためにコンテンツ内容を修正しない。下記文字間隔の調整にあるような実装方法で実現する。
テスト・チェック方法
- マークアップ実装時、コードレビューによるチェック
- スクリーンリーダーで読み上げたときに、コンテンツが自然な順序で読み上げられることを確認する
実装方法
文字間隔の調整
Web
悪い実装例
スペースを使用して単語内の文字間を実現している。
<h1>東 京</h1>
これだと、空白が開くことで1つの単語と認識されず、「東京」ではなく「ひがし きょう」と読み上げられてしまう。翻訳ツールなどでも「東」と「京」の文字それぞれが翻訳されるなど、適切に変換されなくなる恐れがある。
良い実装例
CSSのletter-spacingを使用して文字間を実現している。
<h1>東京</h1>
<style>
h1 {
letter-spacing: 1em;
}
</style>
Android
レイアウト作成時、XMLにてandroid:letterSpacing属性を使用することで文字間を実現している
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="東京"
android:textSize="15sp"
android:letterSpacing="1.1" />
iOS
NSAttributedStringKey.kernに対してvalueを設定することで文字間を実現している
let attrString = NSMutableAttributedString(string: "東京")
attrString.addAttribute(NSAttributedStringKey.kern, value: 1.1, range: NSMakeRange(0, attrString.length))
textLabel.attributedText = attrString