+As already hinted, `<canvas>` can have some limitations for accessibility. It's great for high-performance rendering, but that performance is directly related to a lack of markup + DOM overhead that comes with more accessible materials, like HTML (or even SVG). This problem is pervasive, especially among charting libraries (Vega-lite, Highcharts, etc) with some accessibility capabilities in `<svg>` that are lost if users decide to render in `<canvas>` for the performance benefits. Even `<svg>` has some limitations, due to asymmetrical adoption of ARIA standards, which is why some libraries like [Visa Chart Components](https://github.com/visa/visa-chart-components) renders an accessibility layer using pure HTML (which has high support and standardization) with `<svg>` under the hood. My project [Data Navigator](https://dig.cmu.edu/data-navigator/) takes this idea of separating the visual rendering layer from the accessible rendering layer, but generalizes to virtually any frontend ecosystem (while also [retaining high-performance](https://www.frank.computer/data-navigator/#discussion-1)). We've used it in open source work with [Adobe](https://github.com/adobe/react-spectrum-charts/pull/483), so it is something worth considering if Bokeh intends to continue rendering in `<canvas>`.
0 commit comments