- From: Richard Schwerdtfeger <schwer@us.ibm.com>
- Date: Wed, 16 Jun 2010 08:06:07 -0500
- To: James Graham <jgraham@opera.com>
- Cc: Steven Faulkner <faulkner.steve@gmail.com>, Janina Sajka <janina@rednote.net>, HTML WG <public-html@w3.org>, public-html-a11y@w3.org
- Message-ID: <OF3FC66CC1.936F8B6C-ON86257743.00436FE5-86257744.0047FB69@us.ibm.com>
Rich Schwerdtfeger CTO Accessibility Software Group James Graham <jgraham@opera.com> wrote on 06/15/2010 04:37:06 AM: > From: James Graham <jgraham@opera.com> > To: Janina Sajka <janina@rednote.net>, HTML WG <public-html@w3.org>, > Steven Faulkner <faulkner.steve@gmail.com>, Richard Schwerdtfeger/ > Austin/IBM@IBMUS, public-html-a11y@w3.org > Date: 06/15/2010 04:37 AM > Subject: Re: HTML-A11Y Task Force Recommendation: ISSUE-74 Canvas- > Accessibility > > On 06/14/2010 10:16 PM, Janina Sajka wrote: > > > http://www.w3.org/html/wg/wiki/ChangeProposals/canvasaccessibility > > Some thoughts on these changes: > James, Thank you for your feedback. It is much appreciated. Unfortunately, the task force has already signed off on the proposal. We will need to address these issues points in the HTML working group - which we both are members of. A frustrating point for working group members is that this proposal has been out for month and it was not until after an entire vote for consensus was reached that we get a comment from Opera. In the future it would be appreciated if we could receive comments earlier. That said, let me respond to your comments. > == drawFocusRing(element, x,y,w,h,[drawCustomRing]) == > > The algorithm for determining the rectangle fails to take account of the > current transformation matrix. This seems bad because it means that > under general transformations, the focus region will be the wrong size. > > In general if the current path is known, it seems that it is possible > for the UA to calculate the best-fitting size of the bounding rectangle. > Therefore it is unclear why the author is expected to recompute this > size explicitly. > To be clear, are you suggesting that the author need only pass the x, y coordinates which would be relative to the canvas area? The rectangle would then be computed by the user agent based on the drawing path from that point. If so, I don't have an issue with this. We added the w, and h parameters in response to feedback from others. > It is unclear why the focus ring is restricted to a rectangle in the > UA-drawn case when it is allowed to follow an arbitary path in the > original spec. > Accessibility API services currently use rectangles to represent the visual focus rectangle. We are not restricting what the author draws. This is why we are suggesting a rectangle best fit. > It is unclear to me what it means to "draw the focus ring based on the > final role computed from the native host language semantics and the > supplied role attribute" > This simply states that in the case where the user agent is drawing the focus rectangle based on operating system conventions then those conventions may require that a focus ring is drawn in a certain way based on the role. For example, the focus ring for a checkbox may be different from an item in a tree widget. Who knows, the platform may require that a checkbox be drawn like an ellipse or with a specific color scheme. This simply provides for that. > The step to return false when the UA draws the focus ring seems to be > missing. > > == setCaretSelectionRect(element, x, y, w, h) == > > I found the introductory text quite hard to follow here. In addition, > there are several typos. As an author I think I would have considerable > difficulty figuring out what I was supposed to use this method for even > if I thought I needed it. > > It is not clear why this method only works when an element is focused. > Although the caret is tied to focus, the selection can presumably > adjusted without focusing the selected element (e.g. a select text > button in the application UI). > If the element is not focused or a descendant of what is focused the user is not directly operating with that UI element. They are operating another UI element and the magnifier needs to track the component the user is operating. It does not help the low vision user if they cannot see the component they are operating which would be the one with focus. > There is no canvas API that allows one to measure the height of text. > Therefore asserting that users must do this seems unreasonable. > Are you telling me the author does not know how large the text is given the size of the canvas? Why do you need an API to get the text height. The author does have a knowledge of text height. They also have a knowledge of the dimensions of the canvas which is specified in pixels. I don't think this is unreasonable at all. > The algorithm for UA processing of getCaretSelectionText seems to mix in > a bunch of author requirements. Step 2 has a list of 2 author > requirements followed by 1 UA requirement. Step 5 talks about "your UA", > which doesn't make sense. This algorithm should be rewritten to just > contain UA requirements and author requirements should be elsewhere. > > It is not really clear what happens when the selection is > non-rectangular (e.g. multiline text). I assume authors are supposed to > provide the bounding box of the selection? > This is about the current selection text character and not the entire selection. The magnifier needs to show the user the point at which they are operating. The reason we expanded this to from just the caret selection to selection is that Apple does not have a notion of a caret position during selection vs. Windows which has a caret position. If you expand the zoom to the entire selection area it is quite possible that a low vision user will not be able to operate the selection. That is why it is called a selection position and not a selection area. Imagine a user needing 10X magnification and then trying to view the entire selection area. That won't work. > It is not clear to me why the (x,y) cooordinates may either be at the > top-left or the top right. How does the UA distinguish those cases? > That is determined by the author and not the user agent. We are asking that the author pass the position rectangle to the user agent and we are stating that it is top, left or top, right based on the last selected character. This is very straight forward. > == caretBlinkRate() == > > I am unconvinced this is needed. Is it a big problem if authors always > draw carets that blink at 2Hz or less? [1] documents the range of > frequencies that cause problems as 3Hz-60Hz, and the text of this > document says that the common default is 2Hz. Why not just state that > carets should not blink more rapidly than 2Hz? It also seems like an > typical canvas application may have many more flashing elements than the > caret. Why is it considered special? > Some operating systems allow the user to set the blink rate. It should be honored. > The requirement that "when drawing a blinking caret [the rate] must > reflect the blink rate returned by this method." seems like at most a > SHOULD requirement. e.g. if I want an unblinking caret because I prefer > it that should not be forbidden. > It is not. The wording says "when drawing a blinking caret." Is the I here you or the author? We could adapt this to provide for an unblinking caret. ... I could live with a SHOULD but we would need to discuss this with other members. > The requirement that "the author must determine the blink rate" seems > unreasonable unless you just mean "the author is free to specify a blink > rate of their choice" in which case it should be rephrased. > > == General comments == > > These changes appear to be designed specifically for bespin-like > applications. That seems like a tiny minority of all canvas > applications. Have we checked directly with the bespin developers if > this API addresses their needs? If not I believe that is essential. > It was designed by people who designed and built screen readers and screen magnifiers and have operated within the graphic subsystem on multiple operating systems. We did try to reach the Bespin team through the Mozilla accessibility team and were unsuccessful. That said, <canvas> is far from novel. This is basically Windows 3.0 drawing calls done in a web page. We were providing magnification on these systems as far back as 1992. We agree that Bespin is a minority case today. That does not mean that we should remove access to it. Bespin can be used and is being embedded in web applications today. As usual accessibility was addressed late in the game leaving users without access. Fortunately, the impact is minimal at this time. > The API doesn't really have any visible effects in the non-accessibility > cases. That suggests that it will be widely ignored or misused. Has any > thought been given to ways of avoiding this? > Most accessibility work, including ARIA, is designed to not be intrusive to the visual experience. ARIA does not intrude on the visual experience and has near ubiquitous adoption. So, I do not agree with your assertion. What we are trying to do with this change is to allow a magnifier to magnify at the exact point the user is operating - whether it is the focus position or the caret/selection position they are on during selection or caret typing. Accessibility strategies like skip links to main content have ruined the user experience for people trying to create rich desktop experiences on web pages. > More examples are needed. The existing example should be relocated to > its original location and fixed so it actually uses the new API. > > [1] http://www.epilepsy.org.uk/info/photosensitive/intro
Received on Wednesday, 16 June 2010 13:07:08 UTC