是否有一种标准方法可以让屏幕阅读器拼出数字?
我目前正在使用 NVDA 和 Firefox 并且有以下电话号码
<p>01234 567890</p>
这读作
零一二三四五六七八九十
这让听众很困惑。我想要某种方式来指定屏幕阅读器应该拼出像
这样的数字零一二三四五六七八九零
也许是你样式表中的
speak-numeral
属性?
speak-numeral 属性仅在 Aural Stylesheets 中使用。
文档的听觉渲染结合了声音和语音来遍历文档的内容。听觉演示通常通过将文档转换为纯文本然后将其提供给屏幕阅读器来进行。
听取信息的情况和市场可能是:
- 盲人
- 在车里
- 帮助用户学习阅读
speak-numeral 属性指定如何说出数字。
来源:http://www.w3schools.com/xslfo/prop_speak-numeral.asp
另外,我发现这篇文章很有帮助: http://www.nicksmith.co.uk/blog/2007/11/09/does-your-screen-reader-read-phone-numbers-properly/
然后我想出了以下想法:
0<span>7000</span> 1<span>2</span>1 0<span>2</span>2
在 VoiceOver 中显示为“零、七千、一、二、一零、二、二”。请注意,我将“7000”保留为一个数字;对我来说,“七千”比“七零零零”更令人难忘。
进一步
我对 aural CSS 属性的研究发现我需要的属性已经存在了——‘speak-numeral: digits;’
我不知道屏幕阅读器是否(或哪些)支持这些,但(在理想情况下)他们应该.
speak-numeral: digits;
将数字说成单个数字。因此,“237”读作“二三七”。
speak-as: digits;
一次说一个数字,例如,“十二”说成“一二”,“31”说成“三一”。
tel
URI所以而不是
<p>01234 567890</p>
你会有类似的东西
<a href="tel:01234-567890">01234 567890</a>
phone
属性telephone
属性tel
类 (hCard)我认为最好的办法是以这种方式写号码,它在语义上是正确的,并且让屏幕阅读器通过它的数字读出电话号码
<a
href="tel:01234567890"
aria-label="0 1 2 3 4 5 6 7 8 9 0"
>
01234 567890
</a>
如果你使用 Twig 作为模板引擎,你可以这样做
<a
href="tel:01234567890"
aria-label="{{ "01234567890"|split('')|join(' ') }}"
>
01234 567890
</a>
学分:https://jhalabi.com/blog/accessibility-phone-number-formatting
你可以使用字符拆分
int[] numbers;
for(int i = 0; i<string.length; i++) {
numbers.add(string[i]);
}
注意代码没有经过测试,因为我不知道你使用的是什么语言 java、c#、perl