
@c %start of fragment

@node AtkText
@chapter AtkText
The ATK interface implemented by components with text content.

@section Overview
@code{<atk-text>} should be implemented by @code{<atk-objects>} on behalf of
widgets that have text content which is either attributed or otherwise
non-trivial. @code{<atk-objects>} whose text content is simple, unattributed,
and very brief may expose that content via @code{<atk-object-get-name>} instead;
however if the text is editable, multi-line, typically longer than three or four
words, attributed, selectable, or if the object already uses the 'name' ATK
property for other information, the @code{<atk-text>} interface should be used
to expose the text content. In the case of editable text content,
@code{<atk-editable-text>} (a subtype of the @code{<atk-text>} interface) should
be implemented instead.

@code{<atk-text>} provides not only traversal facilities and change notification
for text content, but also caret tracking and glyph bounding box calculations.
Note that the text strings are exposed as UTF-8, and are therefore potentially
multi-byte, and caret-to-byte offset mapping makes no assumptions about the
character length; also bounding box glyph-to-offset mapping may be complex for
languages which use ligatures.

@section Usage
@include defuns-atktext.xml.texi

@c %end of fragment
