microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
162.23k stars 28.56k forks source link

[Accessibility]: Make syntax highlight accessible to screen reader users via a speech scheme #184357

Open jooyoungseo opened 1 year ago

jooyoungseo commented 1 year ago

CC @meganrogge and @isidorn

Syntax highlight remains inaccessible to screen reader users. I propose using a speech scheme to address this issue. Speech scheme is a technique using and switching between different speech synthesizer voices for visual formattings, such as colors, fonts, sizes, etc.

Just like sighted people see different colors for syntax types, screen readers would be able to hear different voice per syntax highlight type.

As far as I know, there is no straight way to communicate with screen readers to force them to switch voices. However, the following solutions are available:

  1. Using lang attribute. The HTML lang attribute is recognized via screen readers and supported screen reader voice engines, such as JAWS/NVDA Vocalizer and iOS/Mac OSX can detect and automatically switch between different voices (e.g., en-US, en-GB, etc.)

  2. Using server-side voice engines as an option for syntax highlight. Just like VSCode LiveShare extension, you can consider using API to send a server-side voice engines to control all the details. However, screen reader users need to suspend their screen reader speech while using this option that might be inconvenient.

To come up with a more robust solution in the long run, however, I think VSCode team needs to work with some popular screen reader vendors.

System Info

Version: 1.79.0-insider (system setup) Commit: 666396ddec7708df2b986dcc178863faaa67c14d Date: 2023-06-05T11:30:50.018Z Electron: 22.5.5 Chromium: 108.0.5359.215 Node.js: 16.17.1 V8: 10.8.168.25-electron.0 OS: Windows_NT x64 10.0.22621

jooyoungseo commented 1 year ago

Speech scheme is also known as a "voice font" in some literature.

VSCodeTriageBot commented 1 year ago

This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our documentation.

Happy Coding!

VSCodeTriageBot commented 1 year ago

This feature request has not yet received the 20 community upvotes it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our documentation.

Happy Coding!