Доступность: рекомендуемое соглашение alt-text для SVG и MathML?

обзор

в HTML5 теперь <svg> и <math> разметка с HTML-документом без зависимости от внешних пространств имен (достойный обзор здесь). У обоих свои alt - аналоги атрибутов (см. ниже), которые эффективно игнорируются сегодняшним программным обеспечением для чтения с экрана. Таким образом, эти элементы недоступны для слепых пользователей.

планируется ли реализовать стандартное соглашение alt-text для эти новые элементы? я прочесал документы и пришел сухой!

Дополнительные Детали

относительно SVG: альтернативный текст SVG можно рассматривать как содержимое корня title или desc tag.

<svg>
  <title>An image title</title>
  <desc>This is the longer image description</desc>
  ...
</svg>

я нашел один screen-reader, который читает его как таковой, но является ли это стандартом? предыдущие методы вставки SVG также имели проблемы с доступностью, так как <object> теги несколько treatedly непоследовательно чтения с экрана.

Относительно MathML: альтернативный текст MathML должен храниться в alttext атрибут.

<math alttext="A squared plus B squared equals C squared">
  ...
</math>

поскольку считыватели экрана, похоже, не признают этого, библиотека математического рендеринга MathJax вставить текст в во время выполнения.

<span aria-label="[alttext contents]">...</span>

к сожалению NVDA, челюсти, и другие надежно не читают эти ярлыки пока тоже. (Более on ВАЙ-АРИЯ)

в отношении: не имея успеха С в значительной степени неподдерживаемыми атрибутами ARIA, я попытался использовать title атрибуты. Они также, похоже, игнорируются на этих "иностранных" HTML-элементах.

Подведение Итогов

больше, чем быстрый взлом, я ищу рекомендуется для размещения альтернативного текста на этих новых элементах HTML. Возможно, есть спецификация W3C, которую я пропускаю? Или это все-таки просто слишком рано в игре?

5 ответов


после некоторых раскопок я нашел несколько официальных рекомендаций. К сожалению, большинство из них на данный момент не функционируют. Как браузеры, так и читатели экрана имеют много возможностей для реализации, прежде чем Math и SVG можно считать доступными, но вещи are начинаю смотреть.

отказ от ответственности: ниже приведены рекомендации, которые я собрал за последние несколько месяцев кодирования. Если что-то не так, пожалуйста, дайте мне знать. Я постараюсь. чтобы держать это в курсе, как браузеры и программное обеспечение прогрессирует.

MathML

рекомендация

использовать role="math" вместе с aria-label в окрестностях div тег (см. docs). Добавление tabindex="0" позволяет считывателям экрана сосредоточиться именно на этом элементе; этот элемент aria-label можно говорить с помощью специальных клавиш (например, NVDA+Tab).

<div role="math" tabindex="0" aria-label="[spoken equivalent]">
  <math xmlns="http://www.w3.org/1998/Math/MathML">
    ...
  </math>
</div>

Ограничения/Соображения

  • поддержка чтения отрывочных экрана на aria-label (и менее важно role="math").
    обновление: соответствующие билеты NVDA относительно aria-label здесь и здесь.
  • оборачивать в div или span тег, кажется ненужным, так как math это первый-класс элемент в HTML5.
  • я нашел очень мало ссылка на MathML alttext тег.
    обновление: это ромашка-специфическое дополнение, описанное здесь.

ссылки

SVG

рекомендация

использовать верхний уровень <title> и <desc> теги role="img" и aria-label в корневом теге SVG.

<svg role="img" aria-label="[title + description]">
  <title>[title]</title>
  <desc>[long description]</desc>
  ...
</svg>

Ограничения/Соображения

  • по состоянию на февраль 2011 года, IE 9 beta читает все <title> и <desc> теги, что, вероятно, нежелательно. Однако NVDA, JAWS и WindowEyes будут читать aria-label когда элемент также содержит role="img".
  • при загрузке SVG-файла (то есть не встроенного в HTML), корневой уровень <title> тег станет заголовком страницы браузера, который будет читать на экране читатель.

ссылки


В общем, HTML5 пытается отговорить авторов от предоставления контента, который скрыт от зрячих пользователей, потому что (а) он часто содержит новую информацию, которая была бы полезна для зрячих пользователей, (б) он часто плохо написан, потому что мало обратной связи с (обычно) зрячим автором, и (в) он не поддерживается так тщательно и поэтому может быстро устаревать.

таким образом, вместо того, чтобы скрывать информацию в атрибуте, рассмотрите возможность размещения ее обычно на странице как подпись:<p> тег, прилегающий к разделу svg или math, или поместите текст в <figcaption> тег и поместите это и раздел svg/math в <figure> элемент.

Если вы действительно не хотите, чтобы зрячие пользователи видели информацию, я считаю, что стандартная техника заключается в том, чтобы абсолютно позиционировать заголовок с большим отрицательным "левым" значением, по крайней мере, до тех пор, пока читатели экрана не догонят HTML5.


Что касается SVG, аналогичного, но не идентичного приведенным выше предложениям, то, по-видимому, лучшим текущим подходом может быть использование Aria-labelledby со ссылкой на идентификатор элемента, содержащего "alt text" (а не сам текст alt).

<svg aria-labelledby="svg1title">
<title id="svg1title">A wide rectangle</title>
<rect width="70" height="10" fill="black" />
</svg>

вы также можете использовать элементы title и desc, установив Aria-labelledby="svg1title svg1desc".

источник:http://www.sitepoint.com/tips-accessible-svg/

досадно, если вы сделаете это, вы нужно (как-то) убедиться, что идентификаторы уникальны на всей странице (другими словами, если вы используете много SVGs, все они должны иметь разные идентификаторы для заголовка). Это также относится к другим идентификаторам в SVG и является общим серьезным раздражением со встроенным SVG.

(Если это серьезно проблематично, вы можете изучить встраивание SVGs с помощью тега img - вы все равно можете сделать это "встроенным" без внешнего файла, если вы используете URL-адрес данных и base64-кодировать SVG.)


теоретически изображение svg должно быть более доступным, чем растровое изображение с alt-тегом. Во-первых, текст можно сохранить как текст в svg, целые фрагменты текста, а не только короткое предложение. Печально, если сценаристы игнорируют эту дополнительную информацию. Однако не весь текстовый контент может быть виден в любой момент времени, как и для html. Многие изображения svg являются статическими изображениями, но растущая тенденция (основанная на фактическом использовании в открытом интернете), похоже, использует более динамические svgs, e.g для отображения графиков или диаграммы, которые можно редактировать или складывать.

еще одна вещь, которую нужно знать, это <title> элементы будут отображаться как всплывающие подсказки (для зрячих пользователей) во всех браузерах с поддержкой svg AFAIK (по крайней мере, последнего поколения), и что вы можете поместить их в другие элементы svg (название относится к элементу, к которому он является прямым дочерним).


не тестировали это, но вы можете попробовать добавить alt="whatever" в контейнер DIV. Да, это недопустимый атрибут для DIV, но я вижу, что старые читатели экрана не заботятся о том, где появляется alt.

например:

<div aria-label="Whatever" alt="Whatever" role="math">
    <math>...</math>
</div>

очевидно, это при предположении, что считыватели экрана будут читать атрибуты alt (неправильно) на элементах, отличных от IMG. Не тестировали, но это лучше, чем ждать, пока читатели экрана догонят, если это сработает.