KEMBAR78
Update MSAA mapping for subscript and superscript roles · Issue #55 · w3c/core-aam · GitHub
Skip to content

Update MSAA mapping for subscript and superscript roles #55

@joanmarie

Description

@joanmarie

While working on the implementation in Chrome(ium), we discovered an oddity which suggests the mapping for MSAA for subscript and superscript wasn't quite right, namely: You wind up with ROLE_SYSTEM_TEXT (the subscript/superscript role) containing a child of ROLE_SYSTEM_TEXT (the static text). For example:

<h1>This text is <span role="subscript">lowered</span>.</h1>

ROLE_SYSTEM_HEADING
   ROLE_SYSTEM_TEXT "This text is "
   ROLE_SYSTEM_TEXT (subscript)
     ROLE_SYSTEM_TEXT "lowered"
   ROLE_SYSTEM_TEXT "."

Dominic Mazzoni stated that when they are used as ARIA roles they're always going to be on a grouping element and therefore wonders if the GROUPING role might make more sense.

I therefore followed up with @jcsteh. Here's what he stated:

TL;DR: There's no "good" answer for the MSAA role. I guess ROLE_SYSTEM_GROUPING will do. IA2_ROLE_TEXT_FRAME should stay as is. I think it makes sense for the HTML and Core AAMs to be consistent on this.

From what I can see, Chrome uses ROLE_SYSTEM_STATICTEXT (not ROLE_SYSTEM_TEXT) for text leaf accessibles. Even so, I'd rather we didn't use ROLE_SYSTEM_TEXT for anything other than editable text, as MSAA (kinda) suggests this is for navigable text:

The object represents selectable text that allows edits or is designated as read-only.

(Firefox still uses ROLE_SYSTEM_TEXT for text leaf accessibles, but that's somewhat of a historical wart.)

I don't really consider divs and spans to be semantic groupings; i.e. they're not semantically useful like role="group". I've always felt ROLE_SYSTEM_GROUPING was more for semantic groupings.

That said, there isn't really a generic role that fits here. ROLE_SYSTEM_STATICTEXT suggests a text leaf, which is not ideal. So I guess ROLE_SYSTEM_GROUPING will do.

At the end of the day, anyone doing anything serious with a web browser will use IA2 (not just MSAA), in which case the IA2 role overrides. So I don't really care very much about the MSAA role. :)

Therefore, we're going to make this change.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions