Font-Awesomeでアクセシビリティを確保しながらウェブフォントを活用する

2016年4月12日にリリースされたFont Awesomeの最新バージョン4.6。アクセシビリティ的に難があると言われていたアイコンフォントの弱点を補うため、アクセシビリティを重要視したバージョンとなっているようです。
具体的には15個のアクセシビリティ関連のアイコンが追加され、ドキュメントにアクセシビリティの項目が追加。さらに、`aria-hidden="true"`がデフォルトになりました。

追加されたアクセシビリティ関連のアイコン
---

![Screen Shot 2016-04-13 at 2.57.16.png](https://qiita-image-store.s3.amazonaws.com/0/52756/cfa94f9f-19e5-5f44-396a-ea78ad782114.png)

- <i class="fa fa-american-sign-language-interpreting" aria-hidden="true"></i> アメリカン手話通訳（american-sign-language-interpreting / asl-interpreting）
- <i class="fa fa-assistive-listening-systems" aria-hidden="true"></i> 補聴器（assistive-listening-systems）
- <i class="fa fa-audio-description" aria-hidden="true"></i> 音声解説（audio-description）
- <i class="fa fa-blind" aria-hidden="true"></i> 視覚障害者（blind）
- <i class="fa fa-braille" aria-hidden="true"></i> 点字（braille）
- <i class="fa fa-cc" aria-hidden="true"></i> 字幕（cc）
- <i class="fa fa-deaf" aria-hidden="true"></i> 耳が聞こえない（deaf / deafness / hard-of-hearing）
- <i class="fa fa-low-vision" aria-hidden="true"></i> 弱視（low-vision）
- <i class="fa fa-question-circle-o" aria-hidden="true"></i> 丸の中にクエスチョンマーク（question-circle-o）
- <i class="fa fa-sign-language" aria-hidden="true"></i> 手話（sign-language / signing）
- <i class="fa fa-tty" aria-hidden="true"></i> テレタイプライタ（tty）
- <i class="fa fa-universal-access" aria-hidden="true"></i> ユニバーサル・アクセス（universal-access）
- <i class="fa fa-volume-control-phone" aria-hidden="true"></i> 音量調節電話（volume-control-phone）
- <i class="fa fa-wheelchair" aria-hidden="true"></i> 車椅子（wheelchair）
- <i class="fa fa-wheelchair-alt" aria-hidden="true"></i> 車椅子別デザイン（wheelchair-alt）

~~※QiitaのFont-Awesomeバージョンが古いのでフォントは未表示となっています。~~
いつの間にか対応されていました！（2016/06/29追記)

アクセシビリティを確保したコーディング
---

Font-Awesomeのドキュメントではアクセシビリティを担保するために3つのバリエーションとそれぞれの実装方法を提供しています。

### 装飾のためだけのアイコン（デフォルト）

装飾のためだけにアイコンを使用する場合は`aria-hidden="true"`を設定し、スクリーンリーダーに対して存在しないものと認識させます。ビジュアルデザイン上でアイコンがなくても問題がない場合にはこの実装方法で問題ありません。なお、デフォルトのサンプルコードはこの形式となっています。

```html:装飾のためのアイコン
<i class="fa fa-fighter-jet" aria-hidden="true"></i>
```

```html:ロゴとして使用される場合
<h1 class="logo">
  <i class="fa fa-pied-piper" aria-hidden="true"></i>
  Pied Piper, A Middle-Out Compression Solution Making Data Storage Problems Smaller
</h1>
```

```html:リンクの前にアイコンを使用する場合
<a href="https://github.com/FortAwesome/Font-Awesome"><i class="fa fa-github" aria-hidden="true"></i> View this project's code on Github</a>
```

### 意味を持つアイコン

アイコンそのものに意味をもたせて、削除するとビジュアルデザイン上でも意味をなさない場合には`<span class="sr-only">{label}</span>`を利用して、代替テキストをスクリーンリーダーに認識させます。

```html:交通手段をアイコンで表現する場合
<dl>
  <dt>
    <i class="fa fa-car" aria-hidden="true"></i>
    <span class="sr-only">Time to destination by car:</span>
  </dt>
  <dd>4 minutes</dd>

  <dt>
    <i class="fa fa-bicycle" aria-hidden="true"></i>
    <span class="sr-only">Time to destination by bike:</span>
  </dt>
  <dd>12 minutes</dd>
</dl>
```

```html:残り時間をアイコンで表現する場合
<i class="fa fa-hourglass" aria-hidden="true"></i>
<span class="sr-only">60 minutes remains in your exam</span>

<i class="fa fa-hourglass-half" aria-hidden="true"></i>
<span class="sr-only">30 minutes remains in your exam</span>

<i class="fa fa-hourglass-end" aria-hidden="true"></i>
<span class="sr-only">0 minutes remains in your exam</span>
```

### インタラクションが発生するアイコン

ボタンやリンクなどのようにインタラクションが発生するアイコンについては、上記の対策に加えてアイコンに`title`属性を指定することで、マウスなどの認知デバイスでも、隠しテキストを認識できるようになります。

```html:ショッピングカートの中身を見るボタン
<a href="path/to/shopping/cart">
  <i class="fa fa-shopping-cart" title="View 3 items in your shopping cart" aria-hidden="true"></i>
  <span class="sr-only">View 3 items in your shopping cart</span>
</a>
```

```html:ナビゲーションへのリンク
<a href="#navigation-main">
  <i class="fa fa-bars" title="Skip to main navigation" aria-hidden="true"></i>
  <span class="sr-only">Skip to main navigation</span>
</a>
```

```html:削除ボタンアイコン
<a class="btn btn-danger" href="path/to/settings">
  <i class="fa fa-trash-o" title="Delete" aria-hidden="true"></i>
  <span class="sr-only">Delete</span>
</a>
```

### それ以外の方法

フォントアイコンのアクセシビリティについては議論があり、そもそもタグを使用せずに擬似要素を使うべきなどの意見もあります。興味がある方は以下のリンクの内容も確認してみてください。

- [Bulletproof Accessible Icon Fonts | Filament Group, Inc., Boston, MA](https://www.filamentgroup.com/lab/bulletproof_icon_fonts.html)
- [HTML for Icon Font Usage | CSS-Tricks](https://css-tricks.com/html-for-icon-font-usage/)
- [The Great Icon Debate: Fonts Vs SVG](http://www.sitepoint.com/icon-fonts-vs-svg-debate/)

---

- [Font Awesome 4.6 Released — Fort Awesome Articles](https://articles.fortawesome.com/font-awesome-4-6-released-d7213342698a#.cup0cpz9r)
- [Release v4.6.0 · FortAwesome/Font-Awesome](https://github.com/FortAwesome/Font-Awesome/releases/tag/v4.6.0)
- [Font Awesome Icons - Accessibility Icons](http://fontawesome.io/icons/#accessibility)