Warning:
This wiki has been archived and is now read-only.
AddedElementCanvas
Canvas Element Accessibility Issues
Issue
The new canvas element is used for rendering dynamic bitmap graphics on the fly, such as graphs, games, animations, image composition et cetera.
The vision impaired are currently shut out based upon their disability and/or use of assistive technology.
HTML5 currently lacks specific mechanisms to add accessibility hooks for content produced using this element. Traditionally, native development platforms provide some degree of automatic high-level accessibility support for built-in controls, and then a low-level accessibility API for custom controls that developers build using drawing primitives and events directly. The Web platform lacks something similar. For images that are generated on the fly, but thereafter not modified, a text alternative might suffice. For animated graphics demos, a description of the demo could be enough. But for truly interactive application-like content that is custom-rendered, a true accessibility API is needed, not just an assortment of different textual alternatives.
If <canvas> is really needed, then accessibility should be incorporated into the design and the specification should include an appropriate fallback strategy that is supported by assistive technology. Accessible fallback for canvas has not been tested. It is unknown if it works.
The latest published HTML 5 Draft on its use states:
"Authors should not use the canvas element in a document when a more suitable element is available. For example, it is inappropriate to use a canvas element to render a page heading: if the desired presentation of the heading is graphically intense, it should be marked up using appropriate elements (typically h1) and then styled using CSS and supporting technologies such as XBL."
"When authors use the canvas element, they must also provide content that, when presented to the user, conveys essentially the same function or purpose as the bitmap canvas. This content may be placed as content of the canvas element. The contents of the canvas element, if any, are the element's fallback content."
Status
- Issue 74 Canvas Accessibility Raised by Steve Faulkner
- Action 132 - Steve Faulkner to Report on canvas accessibility.
- Action 133 - Richard Schwerdtfeger to Develop an accessibility API and model for canvas as well as attributes to specify alternative content.
- Bug 7011 Filed Canvas accessible fallback provision is under specified
- Bug 7245 canvas
- Related issues and bugs exist(ed) concerning including this element in the spec.
- In discussion on public-html. Accessibility implications were first raised as an issue on public-html July 29, 2007.
- Bug 7404 - "but only if the element is being rendered" needs to take into account <canvas> descendants if we're making them focusable
- Bug 7740 "Authoring advice for canvas is bad for accessibility."
- Bug 7856 "When JavaScript or <canvas> is disabled <canvas> should be treated as an ordinary element and not a replaced element"
- Bug 8661: Contradiction of dimension attributes
- Bug 8722: Focus behaviour should be same for canvas regions as for elements
- Bug 9061: allow image maps on the canvas element.
- Bug 10248 Canvas requires a Caret Drawing call
- Bug 10249: Canvas requires a content selection method.
- Bug 10964: Canvas needs to support a backing store in the DOM subtree capable of supporting screen reading #msg36
- Bug 11238 Enable canvas to support accessible rich text editing
- Bug 11239 Canvas support accessible caret tracking independent of Focus Ring tracking
- Bug 11240: Canvas support accessible selection position tracking independent of Focus Ring
- Bug 11241: Canvas support accessible Focus Ring tracking independent of caret or selection
- Bug 11242: Canvas must define what HTML elements may be used in the DOM Subtree
Change Proposals
Polls
Contents
- 1 Canvas Element Accessibility Issues
- 1.1 Issue
- 1.2 Status
- 1.3 Rationale: Why this element should have accessibility provisions
- 1.4 Rationale: Why this Element should not have accessibility provisions
- 1.5 Use Cases
- 1.6 Assistive Technology Support
- 1.7 Proposed Solutions
- 1.7.1 1. Specify an Accessibility API for canvas Itself
- 1.7.1.1 DOM
- 1.7.1.2 Expanding on the DOM concept with ARIA and support for Platform Accessibility APIs
- 1.7.1.2.1 Premise I Association of the Objects in the model with graphics contexts
- 1.7.1.2.2 Premise II How authors write to canvas will be inherently different that the DOM
- 1.7.1.2.3 Premise III The author will store their own content which must be hierarchical and which must support platform accessibility APIs
- 1.7.1.2.4 Premise IV Some Canvas content may require alternatives
- 1.7.1.3 SVG to Provide Semantics
- 1.7.1.4 SVG to Provide Basis for ARIA roles and Properties
- 1.7.1.5 Other Approaches
- 1.7.2 2. Fallbacks
- 1.7.3 3. Add Advice/Warning to the Spec
- 1.7.4 4. Use Meta Data
- 1.7.1 1. Specify an Accessibility API for canvas Itself
- 1.8 Meeting Minutes Minutes: Accessibility Task Force Canvas Accessibility Subteam
- 1.9 Related References
- 1.10 Related Issues And Bugs
- 1.11 Related E-mail Threads
- 1.11.1 April 2007
- 1.11.2 July 2007
- 1.11.3 August 2007
- 1.11.4 October 2007
- 1.11.5 November 2007
- 1.11.6 December 2007
- 1.11.7 January 2008
- 1.11.8 February 2008
- 1.11.9 March 2008
- 1.11.10 April 2008
- 1.11.11 May 2008
- 1.11.12 June 2008
- 1.11.13 July 2008
- 1.11.14 January 2009
- 1.11.15 February 2009
- 1.11.16 March 2009
- 1.11.17 June 2009
- 1.11.18 July 2009
- 1.11.19 August 2009
- 1.11.20 September 2009
- 1.11.21 October 2009
- 1.11.22 November 2009
- 1.11.23 December 2009
- 1.11.24 January 2010
- 1.11.25 February 2010
- 1.11.26 March 2010
- 1.11.27 April 2010
- 1.11.28 May 2010
- 1.11.29 June 2010
- 1.11.30 July 2010
- 1.11.31 September 2010
- 1.11.32 October 2010
- 1.11.33 December 2010
- 1.11.34 January 2011
- 1.11.35 February 2011
- 1.11.36 March 2011
- 1.11.37 April 2011
- 1.11.38 June 2011
- 1.11.39 July 2011
- 1.12 Canvas API Mailing List
- 1.13 Search Markmail for Related E-mail
Rationale: Why this element should have accessibility provisions
- A native accessible <canvas> would provide a person with disabilities equal opportunity. If HTML5 has an element for content authoring on the web, then accessibility aspects (DOM hooks, SVG on the fly to help augment the Canvas element, or whatever) need to be part of the spec.
- A tried an true fallback mechanism would provide a way to present an alternate when the 'main' equivalent(s) can for whatever reason not be presented.
- The HTML Charter states: "The HTML Working Group will cooperate with the Web Accessibility Initiative to ensure that the deliverables will satisfy accessibility requirements. Coordination with WAI will be primarily conducted through the Protocol and Formats Working Group, but direct coordination with other WAI groups, such as Web Content Accessibility Guidelines Working Group and User Agent Accessibility Guidelines Working Group, will also be done when appropriate."
- It won't work for canvas accessibility problem to be diverted to the expert handlers group. That would would entail making a plug-in that works on all platforms and developers would need to learn new markup. This is unnecessary.
- Saying that the accessibility solution for canvas is not needed and a usage problem solvable through education and evangelism will not work either. What ends up happening is legislation prohibits the use of canvas which will create inhibits adoption. This should have been learned from JavaScript. It took us 5 years to undo the last mess when we tried to shovel JavaScript under the carpet.
- It is possible to make canvas accessible. Work is being done on this now through the creation of a ARIA-enabled DOM binding.
- Applicable Design Principles:
- Accessibility: "Design features to be accessible to users with disabilities. Access by everyone regardless of ability is essential. This does not mean that features should be omitted entirely if not all users can make full use of them, but alternate mechanisms should be provided. The image in an img may not be visible to blind users, but that is a reason to provide alternate text, not to leave out images."
- Evolution Not Revolution: "Revolutions sometimes change the world to the better. Most often, however, it is better to evolve an existing design rather than throwing it away. This way, authors don't have to learn new models and content will live longer. Specifically, this means that one should prefer to design features so that old content can take advantage of new features without having to make unrelated changes. And implementations should be able to add new features to existing code, rather than having to develop whole separate modes."
- Solve Real Problems: "Changes to the spec should solve actual real-world problems. Abstract architectures that don't address an existing need are less favored than pragmatic solutions to problems that web content faces today. And existing widespread problems should be solved, when possible."
Rationale: Why this Element should not have accessibility provisions
- Canvas accessibility problem can be target for expert handlers group. They develop plug-able mechanism to allow AT work with specialized markups.
- An accessibility solution for canvas is not needed, it a usage problem solvable through education and evangelism.
- It is not possible to make canvas accessible. Add a statement that it is not directly accessible, and stop there. Anything less suggests that it shares the default accessibility story of HTML 4, which it clearly does not. The cleanup techniques for canvas should go in the WCAG 2 techniques for HTML5.
- Applicable Design Principles:
- Accessibility: "Design features to be accessible to users with disabilities. Access by everyone regardless of ability is essential. This does not mean that features should be omitted entirely if not all users can make full use of them, but alternate mechanisms should be provided. The image in an img may not be visible to blind users, but that is a reason to provide alternate text, not to leave out images."
- Evolution Not Revolution: "Revolutions sometimes change the world to the better. Most often, however, it is better to evolve an existing design rather than throwing it away. This way, authors don't have to learn new models and content will live longer. Specifically, this means that one should prefer to design features so that old content can take advantage of new features without having to make unrelated changes. And implementations should be able to add new features to existing code, rather than having to develop whole separate modes."
- Solve Real Problems: "Changes to the spec should solve actual real-world problems. Abstract architectures that don't address an existing need are less favored than pragmatic solutions to problems that web content faces today. And existing widespread problems should be solved, when possible."
Use Cases
Many of the use cases below are thanks to Andi Smith's canvasdemos.
Applications
- Bespin (text editor) a great example of the utility of the canvas element, its also a worrying example of the barriers to accessibility its use will produce. It includes editable text, folder lists and interactive elements that are all essentially a graphic. there does not appear to be a way to extract any usable information to support Assistive technology to interpret or provide interaction. It is currently totally inaccessible to screen reading technology. Dion Almaer has some ideas to improve its access, like having an accessible mode that keeps a shadow div or textarea that is off screen. With some focus magic, the reader will see it as the editor and will be able to interact with it... and we can use ARIA in that shadow to get things done.
- cufon (embedded font thingy) An alternative to sIFR, cufon uses VML on IE and canvas on other browsers to render custom fonts in the browser. You have to convert your font to JavaScript first, either using their free hosted tool or by installing the FontForge based server-side script yourself. The JavaScript encoded font file uses VML primitives to improve IE performance; the JavaScript library converts that to canvas calls for other, faster browsers.
- Cufon and Screen Readers - Roger Johansson.
- JuicyDrop - Winamp Music Visualization with JavaScript and Canvas Winamp clone done in html5 and canvas - with visualizations.
- Yahoo! Pipes uses canvas to provide the interactive application to build "pipes".
- Canvas Paint Canvas Paint is a clone of MS Paint built using canvas. You might argue that such an application doesn't really serve a practical purpose, which may be true because basic paint applications probably come with most operating systems.
- A web based email application could provide a basic paint tool for drawing quick sketches to be emailed to someone.
- iwork.com - Apple’s online sharing tool for iWork Documents uses Canvas to render the document itself in the browser to ensure perfect representations of the actual document.
- 280 Slides - Online Presentation Application.
- Shared Whiteboard allows users to draw on their screen and have it duplicated on another. MSN Messenger, for example, provides that ability over their IM chat network. Canvas, in conjunction with XMLHttpRequest, Server Sent Events or maybe even the TCPConnection interfaces being worked on in the Web API WG would allow this to be done using an ordinary web browser.
- 360-degree player - By Scott Schiller. uses Canvas to draw pretty waveform and spectrum EQ graphs around a circular UI that shows load and play progress. The 360 UI works on the basis of decorating plain old HTML links to MP3 files, allowing play, seek, showing progress etc. using the canvas element.
- HTML5 Love - IO from 9Elements. This is a visualizations that combines both the HTML5 canvas and audio elements with updates from social networking site Twitter. It loads 100 tweets related to HTML5 and displays them using a javascript-based particle engine. Each particle represents a tweet - click on one of them and it'll appear on the screen. The music will only be played if the browser supports the audio tag. Details in HTML5 Canvas Experiment blog post
- Canvas Painter painter app - controls on right are canvas based
Mathematics, Visualization
- Bespin Pie - Ben Galbraith The example uses a canvas pie menu demonstration to which a transparent image map has been added. The image map provides keyboard access to segments of the pie menu, it also provides information about their role and state of each and name (text alternative) for each segment. Note: Use of this image map technique, while useful for illustrative purposes is not proposed as a practical solution.
- cylinder uses a Java applet to render a cylinder that the user can move around by dragging the mouse to inspect it. There are many other similar examples on this site.
- square_pyramid actually uses the canvas element for rendering various 3D models. The site appears to be a some sort of educational site about polyhedra shapes. Interestingly, the about page on the site describes how they had used Flash in the past, but changed to using canvas when it became available. For more info visit the about page of the site.
- Scrolling performance graph
- Pie Menu
- Graphics calculator is built using a Java applet and allows the user to plot graphs of mathematical equations.
- PlotKit is a script that can draw graphs from a set of data (e.g. in a table) using either canvas or SVG.
- Protovis A graphical toolkit for visualization from Stanford. It takes a graphical approach to data visualization, composing custom views of data with simple graphical primitives like bars and dots. These primitives are called marks, and each mark encodes data visually through dynamic properties such as color and position.
- RGraph Interactive canvas graph library
- SoundMaster2 music-visualization Playing Radiohead’s Idioteque, the demo displays frequency bars, waveforms, binary outputs and create an image of Thom Yorke, lead singer of Radiohead.
- Gauge.js Apple-esque gauges (with shading and reflection) to your webpages. If you use a Mac or an iPod, these gauges will look familiar to you as they are similiar to the disk space allowance gauges.
- PhysicSketch allows to draw items on the canvas and then hit a button to watch gravity take control.
- jQuery Visualize Plugin: Accessible Charts & Graphs from Table Elements using HTML 5 Canvas
- Open Web Tools Directory by Mozilla Directory lists useful applications and tools available to web developers, with a component to allow you to narrow down your search. But rather than display this information in a table, Mozilla have opted to display the information in a canvas element and make a space theme of it.
- Issues Graph
- ChemDoodle - By Kevin Theisen. An open source chemistry and chem-informatics toolkit where canvas is being used to solve common chemistry related tasks, displaying the molecules in a variety of different ways. There are 6 different components to ChemDoodle, each of which use canvas to display the end graphics. Some also allow the user to interact through mouse and keyboard gestures.
- Flot A Javascript plotting library for jQuery created by Ole Laursen. It takes data from an array and uses the canvas element to draw the plotted graph.
Games and Puzzles
- JavaScript GameBoy (JSGB ) By Sonic1980. JSGB is a Nintendo GameBoy Emulator and debugger (written in JavaScript). It runs many games at full speed (using a browser with a fast JavaScript engine).
- Creating pseudo 3D games with HTML 5 canvas and raycasting by Opera
- Rubik's Cube Java Applets. There are quite a few of these on various web sites, that's just one of them. It uses a java applet to render the interactive cube.
- slide Puzzles implements slide puzzles using canvas.
- Shooter game is a prototype of a first-person shooter game built using canvas. It allows the user to walk around the map, but doesn't yet provide any actual game play beyond that.
- Torus online game
- Super Mario Kart Game
- Breakout game tutorial
- Twitch series of minimal games set within small windows using the canvas element created by C.E.B. Reas. As you complete each puzzle, a new window will open with a new puzzle. All puzzles can be solved by clicking the mouse at the correct times.
- Blob Sallad essentially a physics demo with the ability to split, join, drag and drop the blobs.
- 3bored A shooter/dodge 'em up created by UpsideDownTurtle. Controlling a boxed shape spaceship, the idea is to dodge enemy fire while charging up your spacecraft to ground pound the enemy. As you progress through the levels, different enemy types and firepower appear making survival a much tougher job.
- Starfield You can change direction by moving cursor over the windows, change/inverse speed with mouse-scroll and change stars amount by adding ?n= at the end of the url.
- Defender of the favicon A JavaScript remake of Eugene Jarvis' arcade game Defender.
- Asteroids demo emulating the classic Asteroids game.
- Jigsaw Puzzle
- Canvascape - "3D Walker" First person shooter game by Ben Joffe
- Berts Breakdown
- JS Wars by Jonas Wagner
- JSSpeccy - Matt West ported a ZX Spectrum emulator to JavaScript using canvas to output the display. The emulator comes with 10 games, including Manic Miner and Jet Set Willy.
- Chain Reaction Game - By Yvo Schaap. A single well placed click will decide whether you pass or fail. There are 12 levels each with a required number of balls that need to be detonated, all from your original explosion.
- jsnes JavaScript NES emulator by Ben Firshman. Rather than rewriting the game in JavaScript, JSNES emulates and reads the encoded ROMs displaying the screen within a canvas element.
- Coverfire - by Jerason Banes, is a canvas remake of the Apple II video game Crossfire.
- Life on a Canvas By Mike Pinkowish. A canvas simulation of the Game of Life, a cellular automaton example originally devised by John Conway in 1970.
Widgets and Extensions
- Tab Sidebar extension for Firefox The Tab Sidebar extension for Firefox uses canvas to render smaller preview of web pages in the side bar, which makes it easier to recognize and select the page to switch to.
- Example: clock
- Apple originally invented canvas for their OSX Dashboard, and so it seems likely that there would be a wide variety of widgets that make use of canvas for something. It's likely that there would also be widgets for Opera that use canvas too.
Art and Presentation
- Reflection uses canvas to add a reflection effect to images. There's a list of implementations at the bottom of that page showing practical uses of the effect.
- Gartic Canvas Sketch web based sketching application. It features the usual pencil, eraser, line and shape tools, flood fill, color picker and undo, Gartic also allows you to watch an animation of how you sketched artwork and save it out as PNG, GIF or JPG.
- Surface Photo Gallery - Ernest Delgado has created The Canvas Photo Experiment – a UI implementation that closely follows the 'photo table' application of Microsoft Surface – with the exception of multi touch due to there only being one mouse cursor.
- Canvas Party (Warning Flickering Animation) by Michael Nut
- Content Aware Image Resizing - Stephane Roucheray’s Content Aware Image Resizing demo uses the canvas API to display the dynamically resized bitmaps, showing updates as the algorithm calculates which parts of the image should and should not be resized. he algorithm generates a grayscale image from the source. From the grayscale image it generates an edge detection and energy map. The algorithm then runs from the bottom to the top of the energy matrix looking for the pixel with the lowest energy, creating what is known as a seam of least energy. This seam is then removed from the original image and the result is becomes the source image to repeat this process again until the image is of the desired size.
- Many Lines This application will draw many lines on and around your cursor. The application, developed by Eric Ishii Eckhardt, uses a particle system to draw the lines following your mouse around the screen.
- HTML 5 Canvas Animation As canvas comes closer and closer to the features of Flash; canvas-based cartoons are beginning to appear. Starting with this one, featuring two characters called Tomte and Goat; who explain how you can make your own cartoons in canvas.
- Dynamic Image Collage Berry de Vos (aka RadicalFX) has created a Dynamic Image Collage creation tool, built with canvas. Your collage creating begins with a Flickr search, which will bring up a list of the most popular results. Clicking any of the results will automatically add them to the collage area as a new layer. Each layer can be altered in a variety of ways - from moving, scaling and rotating to changing opacities, blend modes and shadows. You can also adjust the layer position in relation to the other layers. Dynamic image collage with HTML5 and Canvas blog post.
- Animated website background with HTML5
Canvas 3D
- Canvas 3D (Proprietary extension to Canvas) "The Canvas 3D project aims to add support for low-level hardware accelerated (where possible) 3D rendering via the HTML canvas element."
- Asteroids game
- A particle systems demo
- A lightening demo
- youtube video of Canvas 3D demo
- Colorscube 3D cube full of the colours of the rainbow using canvas. The cube itself is semi-transparent throughout and can be rotated for those nice to see corner viewing angles. Colorscube is a simple mapping of the RGB colorspace into 3d.
- O3D is an open-source web API for creating rich, interactive 3D applications in the browser.
- 3D Flickr by Peter Nederlof. As a wall rotates, the user is to click on any panel to reveal a random Flickr photo and push the camera in another direction.
- Re: 3D Mailing List Proposal
- 3D Model Viewer by Giuseppe Sicari uses a combination of JavaScript and canvas to display models of three-dimensional objects which are represented by a list of vertices and a set of faces each of which consists of at least three vertices.
Movement Tracker
- Movement tracker Uses Video, Canvas, Worker implementation explanation by Paul Rouget
Maps
- Cartagen uses GSS - a specification for designing maps. Adapted for dynamic data sources, GSS can define changing geographic elements, display multiple datasets, and even respond to contextual tags like “condition:poor”. Instead of sending pre-rendered tiles for every zoom level, Cartagen draws maps dynamically on the client side. This means maps can move, adapt, and redraw, and can include as many layers of data as needed. Vector mapping is done in native HTML 5, which runs on the iPhone and the Android platforms, and uses less bandwidth overall.
Dynamic Content Injection
Others
- Manipulating videos using HTML5 Canvas and Firefox 3.5
- Processing.js John Resig, JavaScript guru and founder of the awesome jQuery library has ported the Processing visualization language to JavaScript, using the canvas element. With help from Casey Reas and Ben Fry they have created a lot of different demos using the library.
- HasCanvas A tool for creating and sharing Processing scripts and runs on John Resig’s Processing.js.
- CAKE - Canvas Animation Kit Experiment mouse based manipulation
- Write Arabic letters with Canvas and Graphics class - Nokia Forum
- Binary Clock - By Andi Smith. Each circle represent a binary count - when they are filled they represent 1 and when they are empty they represent 0. From the left to right and then downwards, the values represent 1, 2, 4, 8, 16, 32. To get the number 11, the circles 1, 2 and 8 would be filled (1 + 2 + 8 = 11).
- WPS: PostScript for the Web PostScript/PDF interpreter in JavaScript
- Canvas used as a captcha.
- Detexify2 - LaTeX symbol classifier The canvas is purely an input method, not an output method.
- Oliver's simple fluid dynamics simulator Simple fluid dynamics simulator based on the navier-stokes equations, implemented in JavaScript.
- Your World of Text - "Your World of Text is an infinite grid of text editable by any visitor. The changes made by other people appear on your screen as they happen. Everyone starts in the same place, but you can scroll through the world using your mouse..."
- Screen Shoot Me - by Lucho Yankov, provides a way for users to paste an image in their clipboard and make it available on the web in seconds using a shortened URL.
- Canvas Text tool An implementation of the HTML5 canvas text drawing methods for older browser
- Fish Simulator By Satoshi Nakajima simulates the famous flocking behavior of fish. The application uses a canvas pre-rendering technique, which generates images of fish in array of off-screen canvas elements. It then uses a CSS transform to specify the location and direction of each fish.
- Strange Attraction
Related Use Case Notes
- Also note that canvas was implemented by 3 major browsers before it got added to the spec, so the implementers saw a market demand for it. Since it needs to be interoperably implemented to be useful, it accessibility needs to be speced.
Assistive Technology Support
HAL
Support unknown.
Linux Screen Reader (LSR)
Support unknown.
JAWS
Support unknown.
NVDA
NVDA: An Open Source Screen Reader for Windows
Support unknown.
Orca
Support unknown.
VoiceOver
Support unknown.
Window Eyes
Fallback content is currently available in the DOM but it is not announced to the user.
Regarding a time frame for when Window Eyes will announce canvas fallback, the company has said, "Here's a firm commitment, guarantee, absolute fool-proof, official statement that you can take to the bank: we'll do it when we're ready." - Via GW Micro, May 2009.
Proposed Solutions
- An object model to which authors can apply an accessibility API.
- A collection of callback interfaces that can be applied to objects to support an accessibility API mapping on each browser and platform and potentially a vehicle to fire events to ATs.
- A provision for equivalent alternative references that allow a canvas author to specify an alternative resource for drawing that cannot be made accessible through traditional API.
Re: Helping Canvas Tag Be Accessible - Richard Schwerdtfeger. Fw: Canvas Accessibility Next steps - Richard Schwerdtfeger.
1. Specify an Accessibility API for canvas Itself
The canvas API gets information in, so it's possible that one could get information out. The problem is: in what order. There are various heuristics that could be used (the order in which it's drawn, its rendered distance from the origin, or other more elaborate approaches). It may not be ideal, or even the right thing to do, but there certainly is information being provided by the developer to the canvas API that could be exposed to AT. There could, furthermore, be additional pushAnnotation(string)/ popAnnotation() calls added to the API that could provide alternative text information about what is being painted.
Canvas is not mapped to MSAA, but ARIA roles can be added via JavaScript, e.g. resulting in canvas role="img". Still a canvas contains shapes, images, or text. What's missing is a childNode model for those so that they appear in MSAA accessibility,
- When to use Canvas vs SVG? - By T.V. Raman.
DOM
Shift some of the work to the browser, by specifying an accessibility API for the canvas itself (If this is a simple canvas tree then it is likely to be missing some of the info that would be required for orientation when you are accessing it via the accessibility API.)
Make a DOM interface to the platform accessibility APIs that would meet the needs of authors trying to hand-roll their UI. Make the child objects available in the DOM where they can receive any ARIA enhancements you can possibly bolt on by scripting. It is true that currently is just a flat bitmap that you can save as PNG or data URL, but when creating shapes and contents in a canvas, why shouldn't you be allowed to add semantics at the same time? But a prerequisite would be browsers mapping those child objects to the DOM, and perhaps using the RDF features of the XHTML role module to expand the available roles by textnodes or things to describe 3D image galleries or future progressive UIs.
For the approach to work, the hidden DOM could be the "model", and the canvas could merely be a photon dependent "view" -- in terms of MVC pattern-speak (and to borrow a TV Raman phrase).
A nested DOM tree could provide access to effectively blind users interacting with speech or braille. It's less obvious what this implies for people who typically interact with visible controls, e.g. people with motor disabilities using switch access, people with bad eyesight using screen magnification, people with reading difficulties using text-to-speech, people who use symbol browsers that convert on-screen text to symbols, people who speak the names of controls into speech recognition programs, people with colorblindness who want to customize interface colors, people with learning disabilities - or, um, ordinary users for that matter, who will struggle to learn interface patterns that diverge from platform or web norms.
Maybe the browser should offer an easy way to disable "canvas" specifically in favour of that DOM tree. Alternatively, efforts like http://dev.aol.com/dhtml_style_guide may help somewhat in terms of enforcing consistency between apps.
Having a hidden DOM under the canvas element, may not be the best way to expose OS integration, not even just for accessibility. If such an approach works with acceptable accuracy and performance then it casts doubt on the motivation for using <canvas> at all; and in general having two completely separate ways of presenting the same content that must be kept in sync (even in the face of dynamic change) is likely to be error-prone.
canvas accessibility: faked "shadow DOM" proof of concept by James Craig.
Expanding on the DOM concept with ARIA and support for Platform Accessibility APIs
Premise I Association of the Objects in the model with graphics contexts
In order to take the object concept to the next level it is important to understand the process by which the author is writing to canvas. The association of the semantic model with the drawing model will be very important conceptually for authors. It will be important to associate the objects, in the model, with a graphics context. It is also clear that applications may have multiple contexts for a given application. At lower levels of graphics systems device contexts are associated with windows or lite-weight drawing objects. In the end this will be no different than canvas. In our objects model, objects may in fact reference the same drawing context.
Premise II How authors write to canvas will be inherently different that the DOM
How developers use canvas will be inherently different than how they use the DOM. Authors will use a collection of drawing primitive to the canvas graphics context. The context will contain at any time the current foreground, background text, clipping areas, and so on. Based on the context the author draws wherever the want to the canvas based on the state of the context. Consequently, there is no W3C DOM the author will load which would then be rendered by the browser. In fact, there is no guarantee that the author will have a DOM structure for things like text. It is most likely the author will have their own conceptual object model i.e. "This part of the canvas represents the text the editor" or "this part of the canvas represents the decision statement in a flow chart."
Premise III The author will store their own content which must be hierarchical and which must support platform accessibility APIs
While the full duplication of the DOM may be possible it may not be practical. Since content is not drawn and structured like a W3C DOM we may need to consider a modified DOM approach. Things like contenteditable areas in HTML 5 have an associated caret position, selected text, etc. This information, along with the text and nodes are mapped directly to the platform accessibility APIs. The HTML DOM does not have enough of this additional functionality and may not be flexible enough. We should consider a modified version of the DOM that allows the author to provide APIs to support text, tabular constructs, caret information, selection information, and ARIA attributes on DOM elements. This allows the author to map their document structure, if needed, to a callback script interface which may be accessed from an assistive technology through the browser. The browser would manage the communication via the transport layer used on each platform (COM for Windows, etc.). This type of DOM could actually be simpler less deep in that the author may choose to have one DOM element to represent a text area - like the text editing area in Bespin. The reason for maintaining a hierarchy is provide context to the user i.e. " these menu items are contained within this menu."
Premise IV Some Canvas content may require alternatives
Some canvas content may be in the form of 2 Dimensional data or other rich graphical drawing where it just does not make sense to have the author go through an enormous effort to make it accessible as there may be a simple solution. For example, most 2D Graphics (Pie charts, Bar charts, histograms) can be easily rendered through an HTML table interface with headers to someone who is blind. In the case where the data changes dynamically, you can simply replace the graph with an aria-enabled grid bound a server data using Ajax. We should consider adding properties to canvas which describe equivalent alternatives, including entirely different objects, that can be used to replace it as an accessible alternative. This flexible interface would also be of great value to HTML elements like the video tag. The video tag may contain a video closed captioned in English. This would be problematic for a hearing impaired user who only speaks Spanish. We may consider incorporating Access For All metadata for <canvas>, <video>, and other HTML elements to allow for this flexibility either in HTML 5 or a follow on. The Ubiquitous Web Application Working group has a personalization roadmap to address providing user preferences that could be consumed by the user agent to perform the content selection.
SVG to Provide Semantics
SVG could be created on the fly in implementations to provide semantics to help augment the Canvas element. One could easily insert any form of XML markup into SVG, including SVG built-in documentation elements.
If we look at the publications that address accessibility in Flash, such as, both Canvas and SVG can be resized, though SVG is the only true vector graphic (regardless of how the graphic is created). SVG can also be embedded in the page, as a file, and opened in a separate window for resizing. Metadata can be added to a SVG element, which can be used to describe what's happening in an animation (that XML mentioned above). There's also been work with touchpad viewers and other plugins and tools to provide a description of the graphics in SVG, such as the text tick marks in a chart, and the path that forms the graph.
The real issue, though, is that the SVG element would provide a way to annotate Canvas element using XML-based metatada--something that probably wouldn't be simple with the Canvas element directly, or HTML, even if using RDFa.
Related Ref:
- Doug Schepers tweeted that he had submitted a proposal on accessibility and SVG to SVG Open. We might want to get his input.
SVG to Provide Basis for ARIA roles and Properties
SVG could provide the basis for authors to provide ARIA roles and properties if rich components were made using the canvas element.
Other Approaches
Most likely there are other approaches that can be used to add accessibility semantics to the Canvas element--if JavaScript is supported, and we assume with Canvas, it is. Even hiding and displaying textareas, or provide text bubbles in the HTML.
2. Fallbacks
Terse Text Fallback
Require all <canvas> elements to have a terse textual fallback in order to be conformant. e.g. @alt
There is a need for both terse and verbose descriptions. But also a significant enough difference exists that both should exist.
Long Text Fallback
Use aria-describedBy. Apply ARIA markup to the fallback content. If there is a description elsewhere (be it on the page or on another page) then referring to it with aria-describedBy. Otherwise, if it is useful then having it in the content of the element (which should be made available, as per UAAG). This can at least allow for markup (and links, etc).
Element linked to the canvas element through a id/for link
Element, that could be linked to the canvas element through a id/for link.
Fallback Block of 5 Attributes
John Foliot's proposal detailed at Thoughts towards an accessible canvas
- @title
- @author
- @description
- @alt
- @notes
Identify Multiple Alternates
Link to several things from inside the canvas for uses like CAPTCHA and multimedia version of an online course. This requires a more complex site structure since you have to start maintaining parallel versions, which is generally a bad choice to have them up to date (the principle of visible metadata). So the question is whether that is sufficient - and given the paucity of current implementation of fallbacks, perhaps it is. You can always use the existing object element to cascade inside the content too. Maybe looking at how multilingual content is handled would give more interesting source material to try and interpret
3. Add Advice/Warning to the Spec
Add a warning and advice to the spec for reasons not to use canvas and other suitable alternatives -- the text in the HTML5 spec saying when canvas is inappropriate doesn't give any justification and seems likely to be ignored. Example
Provide guidance as to when to use canvas and when to use something else.
Discourage inappropriately use of canvas. If one is using canvas as a rendering layer for an application like Bespin then accessibility of that application goes out the window. The solution to that problem is to figure out why people would want to do that and provide them more accessibility-friendly ways of achieving their goals. Disallow canvas as a rendering layer for an application.
ARIA tree
Build something like an ARIA tree as part of what happens inside the canvas. It's not entirely clear how to navigate this tree visually - you need associations with bits of the canvas perhaps, or maybe authoring guidelines tha explain that you need to pick up on navigation by that tree and respond to it.
But that would at least provide a mechanism by which authors who wanted to could make something better than an entire alternative, becaus it would be part of the code that controls the canvas already.
This is essentially authoring guidelines, rather than anything automated, but canvas is for script authors - a step more complex than SVG and therefore a step harder to generalise with easy-fit solutions. And it's about as close as I can see to a solution (since "create a complete alternative" isn't a solution to making canvas accessible, it's just a reason to avoid it altogether - and that won't happen).
4. Use Meta Data
aria-role="application"
Identify with aria-role="application" to identify a bit of inline code that behaves as an external applet (specifically to allow for special handling by tools, where that would be helpful).
RDFa
Use RDFa for metadata (e.g. author). There are many common ways of including information in binary image files, and some common ones are RDF-based and therefore should be readily RDFa compatible. Attach generic metadata to things that are applications (this was clear enough that images do it already, and lots of tools use that data). If there is an issue on doing that in general, this doesn't need to be specific to canvas, but canvas needs to be noted as a use case.
Meeting Minutes Minutes: Accessibility Task Force Canvas Accessibility Subteam
Related References
- Canvas Accessibility - Breton Slivka
- Canvas (HTML element) From Wikipedia
- HTML5 Canvas Cheat Sheet
- SVG and Canvas
- Accessibility Features of SVG
- Fall Back Content: What Does It Mean? - Gregory Rosmaita
- Bespin and Canvas: Part 2
- Introducing Bespin
- 5.1.7 Code-On-Demand
- Accessible Flash banner ad guidelines
- Just because canvas is in HTML5 doesn’t make it HTML. It’s the anti HTML in sheep’s clothes - Ross Boucher
- Sticks and Stones Can Break My Bones... - John Foliot.
- Thoughts Towards an Accessible Canvas - John Foliot
- If It Fails for Some, It Should Fail for All - Mark Pilgrim
- Thoughts Towards an Accessible Canvas - Comment - Martin Kliehm
- Consequences - John Foliot
- When is the Right time for Accessibility? - Derek Featherstone
- Happy birthday, world wide web! - MarcoZehe
- Canvas 3D, standards, and where - Dion Almae
- ExplorerCanvas, an implementation of the canvas tag for IE.
- confirmed: #html5 #canvas is not mapped to MSAA, but #ARIA roles *can* be added via JavaScript, e.g. resulting in canvas role="img" - Martin Kliehm
- Canvas testing report generator - Philip Taylor.
- Canvas support matrix - Philip Taylor.
- Cufon and Screen Readers - Roger Johansson
- Thinking about canvas accessibility - Steven Faulkner
- Notes on accessibility of text replacement using HTML5 canvas - Steve Faulkner
- Canvas-SVG Bridge - Robin Berjon
- Game Development with JavaScript and the Canvas element - Matthew Casperson Series of Tutorials.
- <Hixie> oh Lachy's post reminds me that i need to follow up with the canvas issue - IRC discussion.
- Canvas, accessibility and SVG - Bruce Lawson.
- Helping Canvas Tag Be Accessible - Google Groups Thread.
- When to use Canvas vs SVG? - Google Groups Thread.
- When to use Canvas vs SVG? - By T.V. Raman.
- Preview of WebKit’s WebGL / Canvas 3D
- Opacity is a Canvas editor.
- Turn Your Vector Art Into Canvas-based Animations With Opacity - Scott Gilbertson.
Related Issues And Bugs
- Bug 7011 Filed Canvas accessible fallback provision is under specified
- Tracker Issue 15 Requirement for Immediate Mode Graphics and canvas element]
- Bug 6502 should the canvas element be omitted from html draft?
- Bug 7056 and <figure><legend> elements should allow flow content children
Canvas requires a content selection method
Rationale: Why this element should be added
- Users want an increasingly dynamic and interactive experience on the web. Providing dynamic graphics is one way in which this can be achieved.
- In the past, Flash and Java have been used for dynamic and/or interactive graphics (among other things). Canvas provides a way to do that with HTML and JavaScript.
- There are already examples of it being put to use in the wild.
- SVG is used for an entirely different type of drawing that meets different needs and is substantially more complex to implement.
- Applicable Design Principles:
- Accessibility: "Design features to be accessible to users with disabilities. Access by everyone regardless of ability is essential. This does not mean that features should be omitted entirely if not all users can make full use of them, but alternate mechanisms should be provided. The image in an img may not be visible to blind users, but that is a reason to provide alternate text, not to leave out images."
- Pave the cowpaths: "When a practice is already widespread among authors, consider adopting it rather than forbidding it or inventing something new."
- Evolution Not Revolution: "Revolutions sometimes change the world to the better. Most often, however, it is better to evolve an existing design rather than throwing it away. This way, authors don't have to learn new models and content will live longer. Specifically, this means that one should prefer to design features so that old content can take advantage of new features without having to make unrelated changes. And implementations should be able to add new features to existing code, rather than having to develop whole separate modes."
- Solve Real Problems: "Changes to the spec should solve actual real-world problems. Abstract architectures that don't address an existing need are less favored than pragmatic solutions to problems that web content faces today. And existing widespread problems should be solved, when possible."
Rationale: Why this Element should not be added
- Research is required that proves that <canvas> is required, wanted or needed by USERS - not developers.
- Canvas is (one of many possible) solutions for dynamic and interactive graphics. For instance the behaviour of the canvas element could be applied to an existing element like img instead.
- Canvas focuses on a on potential solution rather than a problem.
- Adding this element will cause code bloat. A completely new element is not justified.
- SVG provides drawing functionality.
- SVG examples taken in the wild and related for the use cases "is canvas elements really needed?" - Karl Dubost
- Applicable Design Principles:
- Accessibility: "Design features to be accessible to users with disabilities. Access by everyone regardless of ability is essential. This does not mean that features should be omitted entirely if not all users can make full use of them, but alternate mechanisms should be provided. The image in an img may not be visible to blind users, but that is a reason to provide alternate text, not to leave out images."
- Pave the cowpaths: "When a practice is already widespread among authors, consider adopting it rather than forbidding it or inventing something new."
- Evolution Not Revolution: "Revolutions sometimes change the world to the better. Most often, however, it is better to evolve an existing design rather than throwing it away. This way, authors don't have to learn new models and content will live longer. Specifically, this means that one should prefer to design features so that old content can take advantage of new features without having to make unrelated changes. And implementations should be able to add new features to existing code, rather than having to develop whole separate modes."
- Solve Real Problems: "Changes to the spec should solve actual real-world problems. Abstract architectures that don't address an existing need are less favored than pragmatic solutions to problems that web content faces today. And existing widespread problems should be solved, when possible."
Related E-mail Threads
April 2007
July 2007
- RE: conflation of issues or convergence of interests? John Foliot, July 29, 2007
- Use Cases for The <canvas> Element
August 2007
- Re: Use Cases for The <canvas> Element
- Accessibility and design principles in action Re: Use Cases for The <canvas> Element
- The canvas element (detailed review)
- Review of 3.14.11. The canvas element
October 2007
November 2007
- SURVEY: Accept requirement for immediate mode graphics a la canvas element?
- response to 'Accept requirement for immediate mode graphics a la canvas element?'
- A bit of electioneering on the <canvas> charter issue
- Response on canvas-requirement survey
December 2007
- SURVEY: Accept requirement for immediate mode graphics a la canvas element?
- ISSUE-15 immediate-mode-graphics proposal carries over objections
- Canvas gradients should not be optional
January 2008
February 2008
March 2008
April 2008
May 2008
June 2008
- Re: Canvas arc comments
- <canvas> JPEG quality
- canvas 2d context fillRect() negative values for width/height
- Re: Canvas shadows should not be optional
- Re: Canvas security comments
- Re: Canvas ImageData comments
- Re: Canvas gradient comments
- Re: Canvas line style comments
- Re: Canvas path transformations
- Canvas miscellaneous comments
July 2008
January 2009
February 2009
- Example canvas element use - accessibility concerns Steven Faulkner
- another example canvas use- cufon - another accessibility concern and spec contradiction Steven Faulkner
- "Where's the Beef?" department (was RE: Example canvas element use - accessibility concerns) John Foliot
March 2009
- Thoughts towards an accessible <canvas> John Foliot
June 2009
- Re: Example canvas element use - accessibility concerns Steven Faulkner
- canvas and accessibility Re: consensus and last call Charles McCathieNevile
- Canvas - SVG Bridge
- Request for advice on <canvas> accessibility
July 2009
- Re: Request for advice on <canvas> accessibility
- another example of HTMl 5 canvas with interactive UI elements
- update on ACTION-132 Report on canvas accessibility
August 2009
- Re: Helping Canvas Tag Be Accessible
- Canvas at the HTML Caucus -first meeting 7 August 2009
- HTML 5 and canvas
- Re: Issue-74/Action-133 canvas-accessibility and ISSUE-15 immediate-mode-graphics [was: {agenda} HTML WG telcon 2009-08-13
- who would be interested in working with a Canvas object/2D API separate group
- <canvas> and the 2D context API (was RE: Begin discussions for pushing Last Call into 2010)
- RE: Issue-74/Action-133 canvas-accessibility
- Re: HTML 5 canvas accessibility
- HTML 5 canvas accessibility - discussion happening on public-canvas-api@w3.org
- <canvas> Usage (Was: Begin discussions for pushing Last Call into 2010)
- canvas tag and image maps
- Separate Draft of Canvas API Uploaded to CVS
- Canvas API Editors (was: who would be interested in working with a Canvas object/2D API separate group)
- Normative Dependency and the Seven Drafts (was: Canvas API Editors)
- Minutes: HTML Canvas Accessibility Meeting August 21, 2009
- Path to Last Call (was closing various issues)
- Fw: Canvas Accessibility response to Maciej
- Reminder: Canvas accessibility discussion this Friday
- Fw: Follow Up Call - HTML Canvas Accessibility
- Minutes: Canvas Accessibility Call August 28, 2009
September 2009
October 2009
- Canvas 2D API specification update
- RE: Canvas 2D API specification update - defining the element or not
- canvas accessibility progress
- HTML5 Dependencies in Canvas API Spec
November 2009
- canvas accessibility: faked "shadow DOM" proof of concept
- handling focus
- Please keep canvas discussion on the canvas list
December 2009
- ISSUE-74: canvas-accessibility - Chairs Solicit Proposals
- Fwd: ISSUE-74: canvas-accessibility - Chairs Solicit Proposals*equest bridge for canvas accessibility call (resending)
- HTML 5 Canvas Accessibility Meeting
- FW: ACTION-133: Develop an accessibility API and model for canvas as well as attributes to specify alternative content
- New Canvas Wiki page
- minutes: html5 a11y task force canvas sub group telecon minutes 2009-12-17
- Comments about the ACTION-165 draft
January 2010
- Canvas shadow DOM question for interactive HTML5 elements
- Fw: Proposal: Canvas accessibility and a media querries approach for alternative content (Action Item 6 in the HTML Accessibility Task Force)
- Canvas 2D context API is moving to a separate spec (Bug 8331)
- Canvas 2D context API is moving to a separate spec (Bug 8331)
- Agenda: HTML 5 Canvas Accessibility Meeting January 11, 2010
- Fwd: The Canvas 2D API split
- Minutes for today's meeting HTML Canvas accessibility
- Scheduling of regular Canvas Accessibility Call
- code example canvas
- Minutes: canvas accessibility call today
- Minutes: HTML 5 Canvas Accessibility Call
- Fw: Canvas Accessibility Next steps
- Braille is NOT a Sub-Set of Tactile -media types & media groups
- George Kerscher on braille versus tactile as media types
- investigating implementation of image map on canvas
- proposal: retain tactile media group; add tactual to media types ACTION-7
- Re: Agenda: HTML 5 Canvas Accessibility Meeting January 25, 2010
- wiki pages for CANVAS accessibility meetings & minutes
- Minutes: January 25, 2010 HTML 5 Canvas Accessibility Call
- Canvas Accessibility Next Steps
- wiki pages for CANVAS accessibility meetings & minutes
- Canvas example with proposed accessible fallback for Bar Charts
- Agenda: HTML 5 Canvas Accessibility Meeting February 1, 2010
February 2010
- Discussion points for today
- Interactive accessible canvas with multiple controls
- minutes: canvas sub-group of html a11y task force telecon, 2010-02-01
- Integration of HTM
- Ease of testing canvas accessible subtree (was: Re: Integration of HTM)
- Agenda: HTML 5 Canvas Accessibility Meeting February 8, 2010
- More infor for today's canvas accessibility call
- minutes: Canvas sub-group HTML A11y Task Force telecon, 2010-02-08
- Thursday February 11, 2010 on canvas accessibility Meeting
- Extension to Media Queries based on IMS Access For All Specifications for content selection
- Minutes: HTML Accessibility Task Force Canvas Accessibility subteam February 11, 2010
- Proposal for canvas discussion today
- Updated proposal round two (based on feedback from Monday's meeting)
- adom proposal
- HTML 5 canvas accessibility proposal with spec. ready html
- HTML 5 Canvas Accessibility Meeting February 22, 2010
- adding image maps to canvas
- Re: Please vote on the canvas accessibility proposal
- revised proposal - navsubtree
- Agenda: HTML 5 Canvas Accessibility Meeting March 1, 2010
March 2010
- Re: Please vote on the canvas accessibility proposal
- Minutes: HTML 5 Canvas Accessibility Meeting March 1, 2010
- navsubtree proposal for accessible canvas and Issue 74
- change proposal: Provide accessibility implementation information (in the Canvas 2d Context specification) for focus rectangle and caret
- canvas API changes to drive magnification
- Interactive accessible canvas example
- change proposal: Provide accessibility implementation information (in the Canvas 2d Context specification) for focus rectangle and caret
- change proposal - Provide a method for canvas subtree to be hidden from all users
- resolution supporting navsubstree change proposal
April 2010
- Draft Revisions to Canvas 2D Context API
- Fw: Draft Revisions to Canvas 2D Context API to drive magnification
May 2010
- Fwd: Draft Revisions to Canvas 2D Context API to drive magnification
- Accessibiliy SC Meeting
- Re: Draft Revisions to Canvas 2D Context API to drive magnification
June 2010
- HTML Accessibility Task Force Canvas Subgroup Teleconference June 7, 2010
- Canvas accessibility change proposal 2dcontext10-June-7
- ISSUE-105 (was Re: Change Proposals, objections, and the Decision Policy)
- HTML-A11Y Task Force Recommendation: ISSUE-74 Canvas-Accessibility
- Alternative Canvas proposal from Charles
- CfC: Adopt ISSUE-105 canvas-usemap Change Proposal to add usemap attribute to the canvas element
- Re: Fw: Draft Revisions to Canvas 2D Context API to drive magnification
- Survey available on Canvas
- HTML-A11Y Task Force Recommendation: ISSUE-74 Canvas-Accessibility
July 2010
- Re: HTML-A11Y Task Force Recommendation: ISSUE-74 Canvas-Accessibility
- Re: CfC: Adopt ISSUE-105 canvas-usemap Change Proposal to add usemap attribute to the canvas element
- Canvas 2D API changes
September 2010
October 2010
- html5 editor responds to Canvas accessibility related bugs
- testing the CanvasEditor attachment with JAWS12 and IE9 beta (was: Reworked Canvas 2D API using our revised DrawFocusRing)
- ISSUE-74 canvas-accessibility and ISSUE-105 canvas-use
December 2010
January 2011
- RE: HTML 5 canvas
- Solution to grammar, spelling, and
- Canvas Accessibility
- Working Notes: 2011-01-23 Canvas Accessibility Working Group
- Focusability of text span
- Test Case: Option Role - Canvas Accessibility Working Group
- Use Case: setCaretSelectionRect - Canvas Accessibility Working Group
- Review of caret and selection proposal in current canvas API draft
- Canvas and access to remote desktop environments [Was: HTML 5 Canvas Accessibility Call on January 10
February 2011
- Canvas accessibility: A new mode for all focusable elements?
- Canvas 3D: WebGL Spec Final Draft
- fixed oversight in 2D API changes
- Canvas 2D API Change Proposal
- Issue 131 Change Proposal
March 2011
- Real application using canvas. ... showing text
- feedback requested: Canvas change for improved hit testing that also facilitates accessibility
April 2011
- Re: WBS comments objecting to CP to have single Canvas API for caret positioning and focus ring support
- Re: feedback requested: Canvas change for improved hit testing that also facilitates accessibility
- Update on caret tracking
- canvas updates in response to chairs request for clarification on issue 131
- Bug 11239
June 2011
- Accessibility in Canvas: custom widgets
- hit testing and retained graphics
- You Got Your SVG in my Canvas! Mmm, Delicious! (was: hit testing and retained graphics)
July 2011
- RE: hit testing and retained graphics
- Accessibility, perfect or better Re: hit testing and retained graphics
- Re: You Got Your SVG in my Canvas! Mmm, Delicious!
- Canvas Accessibility for Pointer Events and Spatial Awareness
- Canvas UI design question paniz alipour
- This thread is huge - suggested actions (was Re: Moderator Action hit testing and retained graphics)
- Reasons of using Canvas for UI design
- Argument for the approval of adding setElementPath to the Canvas 2d specification.
- correct and incorrect uses of canvas
- setElementPath is needed by accessibility APIs
- SVG vs canvas performance
- Canvas, CSS and ARIA with Form Elements
- Precedent for click events on non-visible items
- Still stuck on Use Cases
- Fwd: Re: Issue 13176 - Justification / Examples
- To all of you - Canvas a11y v. Doing it right
Canvas API Mailing List
Purpose: to facilitate focused discussion on the canvas API and to encourage participation in that discussion from graphics experts and others who may not be members of the HTML working group (and may not want to be).
- public-canvas-api Archives
- mail a new topic to public-canvas-api
- Subscribe public-canvas-api
- Unsubscribe public-canvas-api