Accessibility/TextAttributes: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
 
(45 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<small>[[Accessibility |<< Back to Accessibility Home Page]]</small>
<small>[[Accessibility |<< Back to Accessibility Home Page]]</small>


= Introduction =
Text attributes are now implemented in Firefox 3.1


This article is targeted to reflect a support of text attributes by Gecko accessibility API. There is no implementation in Gecko yet. This is a draft of specification how we will do it.
This document has been superseded by the official [https://developer.mozilla.org/en/Accessibility/AT-APIs/Gecko/TextAttrs/ text attribute developer docs].


= Proposed API =
The original text attribute proposal is available in the [https://wiki.mozilla.org/index.php?title=Accessibility/TextAttributes&action=history history for this page].
 
== Summary ==
 
This is the internal nsIAccessibleText method (not the ATK or IA2 method -- the implementation for those will consume this method).
 
The following method returns a collection of text attributes at the given offset, and calculates the range where returned attributes are stretched.
 
  nsIPersistentProperties getTextAttributes(in long offset,
                                            out long rangeStartOffset,
                                            out long rangeEndOffset);
 
== Parameters ==
 
; offset
: [in] the given offset
 
; rangeStartOffset
: [out] the start offset of the result range
 
; rangeEndOffset
: [out] the end offset of the result range
 
== Return Value ==
 
A collection of text attributes (the list of pairs consisted from name and value).
 
== Questions ==
 
* Range questions
** What is the range hierarchy: are range nested or consecutive? Let we have a text 'abc<b>def</b>ghi'. If ranges are nested then we have two ranges: (0,9) and (3,6). If ranges are consecutive then we have three ranges (0, 3), (3, 6) and (6, 9).
** Should text attributes in a range be either relative to a parent (in the case of nested ranges) or previous (in the case of consecutive ranges) range or cumulative?
 
* Default attributes
** Should we support default attributes? IA2 hasn't their support. We could do it through an object attribute, if we really need it.
 
= Events =
 
== Summary ==
 
When a certain text attribute is changed then 'EVENT_TEXT_ATTRIBUTE_CHANGED' event should be fired.
 
== Questions ==
 
* How will AT know what attribute has been changed? Should the getTextAttributes() method return only last changed attribute?
* It's not clear how to track CSS style changes mapped to text attributes. Possibly some of those changes will lead accessible is recreated.
* Are more events other than changes to whether an item is misspelled even useful?
 
= List of supported attributes =
 
== Gecko specific ==
 
{| summary="Gecko Specific Text Attributes" width="90%" border="1" cellspacing="1" cellpadding="1"
! Attribute name
! Attribute description
! Default value if attribute not exposed
|-
| direction
| rtl or ltr for bidi text
| ltr
|-
| border
| not sure how best to expose these properties, or whether to (same with outline CSS property)
| no border
|-
| language
| What language is this text in, e.g. en-US (do we want this or do we use IA2::locale and make sure each locale change gets separate accessible object?)
| same as doc itself?
|-
| misspelled
| "true" if it is marked by the inline spell checker for being incorrectly spelled. Attribute not present in all other cases.
| Not misspelled
|-
| static
| "true" for list bullet/numbering text or layout-inserted text (such as via CSS pseudo styles :before or :after)
| false
|-
| z-index
| a number which indicates how low/high an element is
| 0 (normal height)
|}
 
== Linux Foundation Proposed (ATK + IA2) ==
 
Note: the following characters in names and values need to be escaped with a backslash: backslash, colon, comma, equals, and semicolon.
 
{| summary="Proposed Text Attributes" width="90%" border="1" cellspacing="1" cellpadding="1"
! Attribute name
! Attribute description
! Default value if attribute not exposed
|-
| background-color
| Background color as u, u, u
| no default, always specified?
|-
| color
| Foreground color as u, u, u
| no default, always specified?
|-
| font-family
| The computed font name
| no default, always specified?
|-
| font-size
| Font size in pixels
| no default, always specified?
|-
| font-style
| italic (oblique not currently supported)
| normal
|-
| font-weight
| The computed font weight (100, 200, 300, 400, 500, 600, 700, 800, 900; normal = 400, bold = 700)
| 400
|-
| text-line-through-style
| solid (only exposed if if there is a line through)
| no line through
|-
| text-underline-style
| solid (only exposed if if there is an underline)
| no underline
|-
| line-height
| [http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-line-height CSS2]
| no default, always specified?
|-
| margin-bottom
| [http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-bottom CSS2]
| no default, always specified?
|-
| margin-left
| [http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-left CSS2]
| no default, always specified?
|-
| margin-right
| [http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-right CSS2]
| no default, always specified?
|-
| text-align
| left/center/right/justify
| left
|-
| text-indent
| [http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-indent CSS2]
| no indent
|-
| text-position (for sup/sub)
| ?
| ?
|}
 
== Currently unsupported ==
 
The following text attributes, which are in the [http://www.linux-foundation.org/en/Accessibility/IAccessible2/TextAttributes IAccessible2 text attribute specification], are not currently supported due to today's limitations of text formatting on the web:
 
* text-line-through-mode
* text-line-through-type
* text-underline-type
* text-underline-width
* text-underline-mode
* list -- the list bullet text is exposed via the accessible text interface, with the text attribute static=true
* tab-stop
* text-shadow
 
= References =
 
* [http://www.linux-foundation.org/en/Accessibility/IAccessible2/TextAttributes IA2 Text Attributes] - IAccessible2 Text Attributes Documentation

Latest revision as of 19:25, 8 March 2012

<< Back to Accessibility Home Page

Text attributes are now implemented in Firefox 3.1

This document has been superseded by the official text attribute developer docs.

The original text attribute proposal is available in the history for this page.