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



обзор



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



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



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



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



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


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



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



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


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



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


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



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



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



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

1012   5  

5 ответов:

после некоторого копания, я нашел несколько официальных рекомендаций. К сожалению, большинство из них не функционируют в данный момент времени. Как браузеры, так и программы чтения с экрана имеют много возможностей для реализации, прежде чем математика и 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 бета читает все<title> и <desc> теги, что, вероятно, нежелательно. Однако, программу NVDA, челюсти, и WindowEyes будет читать aria-label когда элемент также содержит role="img".
  • при загрузке SVG-файла (то есть не встроенного в HTML), корневой уровень <title> тег станет заголовком страницы браузера, который будет читать на экране читатель.

ссылки

таким образом, вместо того, чтобы скрывать информацию в атрибуте, рассмотрите возможность размещения его обычно на странице как заголовок в <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/

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

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

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

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

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

например:

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

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

Comments

    Ничего не найдено.