|
|
| (44 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.
| |
| | |
| Question: for items with a default value, should we always just leave that attribute blank when the default value is used? For example, should we expose atext attribute for font-style=normal or text-align=left?
| |
| | |
| {| 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] (Too vague? Wouldn't it be better to only provide one unit ever?)
| |
| | no default, always specified?
| |
| |-
| |
| | margin-bottom
| |
| | [http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-bottom CSS2] (Too vague? Wouldn't it be better to only provide one unit ever?)
| |
| | no default, always specified?
| |
| |-
| |
| | margin-left
| |
| | [http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-left CSS2] (Too vague? Wouldn't it be better to only provide one unit ever?)
| |
| | no default, always specified?
| |
| |-
| |
| | margin-right
| |
| | [http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-right CSS2] (Too vague? Wouldn't it be better to only provide one unit ever?)
| |
| | 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] (Too vague? Wouldn't it be better to only provide one unit ever?)
| |
| | 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
| |