W3C home > Mailing lists > Public > www-svg@w3.org > August 2012

Fw: SVG Accessibility Gap Analysis

From: Cameron McCormack <cam@mcc.id.au>
Date: Fri, 24 Aug 2012 07:17:02 +1000
Message-ID: <50369DCE.7080003@mcc.id.au>
To: SVG public list <www-svg@w3.org>
I am forwarding here with permission Rich Schwerdtfeger's SVG 
accessibility gap analysis, reformatted into plain text for easier email 
discussion.



Introduction
============

Every major browser now supports Scalable Vector Graphics (SVG) making 
it an open supported retained mode, two-dimensional graphics technology 
capable of supporting clear rendering of graphics even when zoomed. 
Furthermore, the growth of big data on the Web and the limited number of 
mobile platforms on which Flash is supported make SVG and HTML5 Canvas 
the essential 2-D drawing engines for complex visualizations on the Web. 
The drawback is that it is not accessible, restricting the use of some 
rich visualization solutions that make use of it. The purpose of this 
document is to define a common strategy among the major browser 
manufacturers to fill accessibility gaps in SVG 2.0.


Support for assistive technologies through accessibility services
=================================================================

Most major browsers support assistive technologies, like desktop 
applications, by mapping content to platform accessibility API. This API 
is used by assistive technologies to process web content.  The following 
graphic shows how SVG content could map to platform accessibility APIs.

   Figure 1.0 SVG Markup to Platform Accessibility API
   [see attachment interop-at.png]

Figure 1.0 shows how SVG markup, with WAI-ARIA markup could get mapped 
to an SVG DOM node that in turn is mapped to an accessible API object in 
the platform accessibility API. An Accessible object in the platform 
accessibility API exposes:

* The role or type of object that semantically has meaning to the user
* The accessible state or properties associated with the object 
(selected, checked, etc.)
* Name of the object
* Event notification to convey changes in state, DOM structure changes, etc.
* A means to walk the tree or containment hierarchy
* Special interfaces to text, tables, control patterns, etc.

The section raises a number of issues that need to be addressed in order 
for SVG to be accessible which will be covered in the following sections.

Of the items needed, SVG only provides the <title> element and the 
<description> element which are defined in the document Accessibility 
Features of SVG <http://www.w3.org/TR/svg-access/>. These features 
allowed an author to define a name and help text for an SVG drawing 
object that was the extent of the requirements that one might expect 
from WCAG 1 accessibility guidelines. These features do not provide for 
full interoperability with assistive technologies and in that they do 
not convey the intent of the author and in the case of title may create 
unwanted side effects such as a tooltip to pop up when hovering over the 
drawing object.


Accessibility Gap Analysis of SVG
=================================

This table shows a preliminary accessibility gap analysis of SVG and it 
is a summary of the detailed


Feature: Role attribute

Limited to XLink

Questions:
* Do we have it take a CURIE and namespace reference ARIA roles?
* Do we simply take non-prefixed ARIA values from the ARIA specification?


Feature: Role value taxonomy

Work to use the existing ARIA specification as much as possible. If we 
need to expand on it we will do the work here and work with the ARIA 
working group to integrate into ARIA 2.0. This allows Canvas to benefit.

*Unless a role is applied to an element it should be considered 
presentational for performance reasons on behalf of the browser and AT*

Note: Apple and Mozilla already map ARIA roles on existing SVG elements 
to platform accessibility API so that may not be practical.


Feature: ARIA states and properties

Work to use the existing ARIA specification as much as possible. If we 
need to expand on it we will do the work here and work with the ARIA 
working group to integrate into ARIA 2.0. This allows Canvas to benefit.


Feature: Keyboard navigation

Use tabindex from HTML5

Questions:
* Do we also use SVG Tiny’s keyboard navigation model?
* Should we include navigation vehicles from other document formats?
* Do we use a combination of these?


Feature: Label capability with tooltip

Yes <title>


Feature: Label capability without tooltip

Use ARIA labeling


Feature: element description support

Limited to hidden <desc> text

I suggest we use what ARIA 1.1 provides as it should include an 
aria-describedat that will take a URI. ARIA 1.0 already provides an 
aria-describedby that can reference visible content


Feature: Semantic structure, Containment hierarchy

Make use of SVG DOM and
* <g> element
* aria-owns
* aria-flowto

Questions:

* Will these mechanisms be sufficient?
* How do we manage the amount of information exposed


Feature: Rich Text, Caret and selection support

Questions:
* Do we support any rich text editing in SVG?
* ARIA 1.1 is looking at a Caret role
* ARIA 1.1 has aria-selected
* No vehicle to provide selection location
* Do we do this for SVG 2.0?


Feature: Device Independent Event support

Recommend we look at Indie UI


Feature: Follow System settings for font and color

SVG provides no interactive UI components per say but it would be good 
to be able to follow system settings for font and color information. To 
do this we need to be able to expose the settings to an SVG application.

* Should we simply expose high contrast mode that could be adequate itself?
* Should we defer this to Indie UI so that what we use would be 
applicable to all web application technology.

I recommend we look to Indie UI context awareness APIs for this but we 
need consensus.


Feature: Pan and Zoom document areas for all users (not just those 
considered with low vision)

Questions:
* To what extent should we go with this?
     - Pan and Zoom within a selected area
     - Pan with and Zoom at the pointing device location
     - Zoom and pan around an object with focus
     - Directed Pan and Zoom based on Indie UI events


Feature: Animation

Questions:
* Do we do something special for animation?


Filling the Gaps – Detailed discussion points
=============================================

This section covers some of the detailed discussion from the gap 
analysis above.

Semantic Structure and Containment Hierarchy
--------------------------------------------

Up until now the limited accessibility work on SVG has been dependent on 
the use of the SVG DOM to apply accessibility information. The SVG DOM 
is created from a parsing of XML declarative drawing directives that in 
no way convey semantic structure such as the following:

* A bar within a bar chart
* An option within a listbox that could be used to represent a pie chart

In discussions with Google, Microsoft, and Mozilla it was agreed that we 
should follow the current declarative model defined by ARIA and use the 
<g> element to produce a structured, semantic containment hierarchy and 
to use WAI-ARIA to apply accessibility semantics on top of the that 
structure. Currently, both Safari and Firefox map role information to 
platform accessibility API in SVG so this strategy is consistent with 
best practices today. How well the mapping works and how consistent the 
mappings are is yet to be determined.

WAI-ARIA provides additional properties that can facilitate providing 
structural information to the assistive technology:

* aria-owns – states that an element owns another element as a child
* aria-flowto – states that an object flows to another object (such as a 
rendered network topology)
* aria-setsize – indicates the size of a set
* aria-posinset – indicates the position in a set
* aria-level – indicates how deeply nested an element is in a structure

Al challenge we will have stems from the fact that SVG is a retained 
mode graphics engine. All drawing objects are in the DOM even though 
they may not be perceivable at the current magnification level. An 
example would be a house drawing where you zoom in for more detail on an 
object. A assistive technology, when accessing the accessibility 
services layer could be exposed to all the drawing objects and this 
could create performance and memory consumption issues for the browser 
who is maintaining an accessibility tree of the SVG document or the 
assistive technology who maintains a virtual model of the SVG document. 
We must take this into consideration when making SVG accessible.

The Role Attribute
------------------

The role defines the type of an object in a UI. Given that SVG will 
largely be used within an HTML document it would be best to not use the 
namespace feature of XML and have role simply refer to role values in 
the ARIA taxonomy negating the need for namespaces.

The Role Value Taxonomy and Use Case Development
------------------------------------------------

The only Role Value Taxonomy is only defined by WAI-ARIA and it encompasses:
* Interactive Widgets such as checkboxes, list boxes, grids, and sliders
* Non-abstract structural semantics roles such as region, landmark 
regions, and document
* Abstract roles that define a class of semantic roles but are not 
directly applicable to markup.
* Restrictions on the states and properties that can be applied
* An inheritance model for Roles to inherit from their superclasses.
* Required child elements for roles

If new ARIA roles are needed we should subclass portions of the WAI-ARIA 
taxonomy for graphics. This may also require us to work with platform 
vendors to extend their platform accessibility API.

ARIA 2.0 has an issue to address new roles for SVG. ARIA 2.0 work has 
not begun. We should seed new values in the SVG working group and then 
coordinate integration of them into ARIA 2 so that canvas may also make 
use of them.

Regardless of the approach here we must produce a set of use cases on 
which to build our SVG accessibility strategy.

Develop New ARIA States and Properties for Graphics
---------------------------------------------------

If new ARIA states and properties we should extend WAI-ARIA for 
graphics. This may also require us to work with platform vendors to 
extend their platform accessibility API.

ARIA 2.0 has an issue to address new states and properties for SVG. ARIA 
2.0 work has not begun. We should seed new values in the SVG working 
group and then coordinate integration of them into ARIA 2 so that canvas 
may also make use of them.

If we do not wish to limit ourselves to the existing ARIA role, states, 
and properties and expand on what ARIA provides we may need to create 
new states and properties. If this is done we will need to define 
accessibility API mappings for states and properties for the platforms. 
We should

Keyboard Navigation
-------------------

SVG 1.1 has no keyboard navigation and SVG Tiny 1.2 keyboard navigation 
is inconsistent with HTML keyboard navigation. In meetings between 
Google, Mozilla, IBM, and Microsoft it was generally agreed that HTML5 
tabindex should be used for keyboard navigation. There are also plans to 
integrate tabindex in a future version of WebKit. This allows for a 
consistent DOM keyboard navigation model. Microsoft currently supports 
focusable but had no issue with supporting HTML5’s tabindex instead.

HTML5 supports a tabindex property on all its elements. If the tabindex 
is set to “0” the element is placed in the tab order based on the 
document order. A value greater than zero can change the order in which 
the element appears in the tab order to override the default DOM 
navigation order. A value of “-1” allows the author to programmatically 
set focus on the element with the tabindex having this value but it does 
not place the element in the tab navigation order. All interactive 
controls, such as form controls are placed in the tab navigation 
sequence similar to having a tabindex=”0”.

Follow system settings for font and color settings
--------------------------------------------------

It is a 508 requirement to meet system settings for font and color. 
Since SVG has no UI controls at this point we could defer this to Indie 
UI to expose the information through their Context Awareness API 
settings or provide a new API for SVG to do this. I recommend we defer 
this to Indie UI and let them handle it.

Panning and Zooming
-------------------

Today, Web browsers support page level zooming using the cntrl+/- keys 
for zooming but no panning. Unlike HTML content, SVG uses scalable 
vector graphics such that when zooming we don’t experience stair 
stepping that we typically see with bitmap graphics. Also, for complex 
graphics and charts it may be advantageous to be able to zoom to parts 
of those graphs and pan around those portions of the graph. This would 
also be of value to mobile devices that have a limited display real 
estate. This is a benefit to all low vision users – including those who 
don’t rely on a screen magnifier. With the changes we are making for 
accessibility we should consider adding:

* Pan and Zoom within a selected area (drag your mouse  and chose a box 
around which to pan or zoom)
* Pan with and Zoom at the pointing device location
* Zoom and pan around an object with focus
* Directed Pan and Zoom based on Indie UI events based on the current 
point of regard defined the pointer position or the object having 
keyboard focus. IndieUI is intended to supply higher level events such 
as ZoomIn, ZoomOut, DrillDown, etc. without worrying about the input 
device that provided the command.

Caret and Selection Tracking
----------------------------

It is important for a screen reader or screen magnifier to be able to 
track when a edits or selects text. In any drawing engine there is a 
provision to be able to draw and there will be times in SVG where we 
want to be able to edit or select text.  In ARIA 1.1 we are looking at a 
new ARIA caret and selection tracking markup that has yet to be defined 
but the essence of the change is to take a drawing object, give it a 
role of caret and bind it to an element with text in markup using an ID 
reference. We could then provide an offset location within the text 
associate with it. The bounds of the caret can be determined from the 
path associated with the drawing object.


Use Cases
=========

Although not yet covered here it will be important that we create use 
cases that we need to address during the course of specification and 
implementation to ensure we have met the SVG 2.0 accessibility goals. 
IBM’s main interest in SVG accessibility is for producing accessible 
visualized data analytics and eventually drawing objects in web-based 
office suites. Here are some examples:

* Scatter plots
* Bar charts
* Pie Charts
* Rich text embedded drawing in a cloud based office offering
* Drawings in presentation tools in a cloud based office offering



interop-at.png
(image/png attachment: interop-at.png)

Received on Thursday, 23 August 2012 21:17:49 GMT

This archive was generated by hypermail 2.3.1 : Friday, 8 March 2013 15:54:52 GMT