Произносите аббревиатуры или инициалы как отдельные символы в специальных возможностях Talkback для Android

Я работаю над функцией голосовой доступности с использованием двусторонней связи, но когда голос зачитывает текст из текстового представления, он считывает аббревиатуру / инициализм как слово, а не отдельные символы. Например, FBI должно быть F B I, а не читать как слово.

1
0
1 088
2

Ответы 2

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

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

Обновление 29 ноября 2018 г.: Основываясь на комментариях, вот некоторая дополнительная информация.

Если в середине предложения стоит аббревиатура, например

The FBI always gets its man

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

<p>The FBI always gets its man</p>

может стать

<p>The <span aria-hidden = "true">FBI</span> <span class = "sr-only">F B I </span> always gets its man</p>

Таким образом, видимое «ФБР» скрыто от программ чтения с экрана, и за ним следует визуально скрытый текст «F B I», который программы чтения с экрана объявляют отдельными буквами.

(Класс "sr-only" можно увидеть по адресу Что такое sr-only в Bootstrap 3?)

У принудительного такого поведения есть два (как минимум) недостатка:

  1. Как уже упоминалось, пользователи Брайля получат дополнительный текст. Конечно, в данном случае это не так уж и много, но все же увеличивает накладные расходы при чтении шрифта Брайля.

    Базовое «ФБР» шрифтом Брайля: braille of FBI
    В начале есть две одиночные точки. Первая точка обычно означает, что следующий символ находится в верхнем регистре. Когда у вас есть две точки подряд, это похоже на «заглавные буквы», поэтому он говорит вам, что все следующие буквы находятся в заглавных.

    Встроенные пробелы в "F B I"
    В этом случае перед каждой буквой должен стоять символ «заглавные буквы» (одна точка), потому что это отдельные «слова» и, между каждой буквой есть пробелы.

    Итак, «ФБР» занимает 5 ячеек, а «ФБ И» - 8 ячеек.

  2. Второй недостаток заключается в том, что на устройствах iOS и Voiceover, поскольку абзац (<p>) разделен на встроенные элементы <span>, при смахивании вправо с помощью Voiceover он будет останавливаться при каждом перерыве, поэтому вы услышите «The» затем «ФБР», потом «всегда достает своего человека». Не лучший пользовательский опыт. Не уверен, что Talkback делает то же самое.

Что ж, что касается функции, над которой я работаю, клиент хочет, чтобы она была такой - хочет, чтобы сокращение для меня произносилось как символы, а не слова

Kwaw Annan 29.11.2018 22:20

Слово является частью ссылки или кнопки? Вы можете указать альтернативный ярлык, но, опять же, он не будет правильно "читаться" пользователями Брайля. Если это просто текст в середине абзаца, это немного сложнее. Вы можете предоставить визуально скрытый текст, который объявляет программа чтения с экрана. Я могу добавить более подробную информацию, если я буду больше знать о ситуации.

slugolicious 30.11.2018 00:15

Это просто TextView

Kwaw Annan 30.11.2018 00:25

Если вы просто хотите прочитать слово как отдельные символы, добавьте символ нулевой ширины, например "\ u200B", между каждым символом слова.

fun String.toAbbreviation() = this.replace(".".toRegex(), "\$0\u200B")

Пробел не будет виден и будет читаться как аббревиатура.

Другие вопросы по теме