+ /**
+ * The text interface should be implemented by objects which place textual information onscreen as character
+ * strings or glyphs. The text interface allows access to textual content, including display attributes and
+ * semantic hints associated with runs of text, and access to bounding box information for glyphs and substrings.
+ * It also allows portions of textual content to be selected, if the object's StateSet includes
+ * STATE_SELECTABLE_TEXT.
+ *
+ * In some cases a Text object may have, as its content, an empty string. In particular this can
+ * occur in the case of Hypertext objects which do not display explicitly textual information onscreen,
+ * as Hypertext is derived from the Text interface. @see Hypertext.
+ *
+ * Typographic and semantic attributes of onscreen textual content, for instance typeface, weight,
+ * language, and such qualities as 'emphasis' or 'blockquote', are represented as text attributes.
+ * Contiguous sequences of characters over which these attributes are unchanged are referred to as
+ * "attribute runs", and are available via Text::getAttributeRun. Where possible, implementing clients
+ * will report textual attributes which are the same over the entire text object, for instance those
+ * inherited from a default or document-scope style, via getDefaultAttributes instead of reporting them
+ * explicitly for each character. Therefore, for any span of text, the attributes in effect are the union
+ * of the set returned by Text::getDefaultAttributes, and the set returned at a particular character
+ * offset via Text::getAttributeRun.
+ *
+ * @note Events that may be emitted by instances of Text include:
+ * \li \c "object:text-attributes-changed" The attributes of a range of text, or the range over
+ * which attributes apply, has changed.
+ * \li \c "object:text-changed" The text content of this object has changed.
+ * \li \c "object:text-bounds-changed" The character bounds of a text object have changed,
+ * for instance in response to a reformatting or reflow operation.
+ * \li \c "object:text-caret-moved" The character offset of the text caret (visible or notional) within
+ * this object has changed. Events of this type may also be generated when an onscreen
+ * text caret appears or disappears.
+ * \li \c "object:text-selection-changed" The range or number of text selections within this text object
+ * has changed.
+ *
+ * @note In some cases, objects which are not onscreen may implement Text, but if such objects
+ * implement Component, their potential visibility should be examined (via comparison with STATE_VISIBLE
+ * and STATE_SHOWING) before exposing them to the user. Objects which implement Text but not Component
+ * may be encountered in special-purpose interfaces or as special ¨accessibility¨ extensions to visual
+ * interfaces to allow non-graphical access to application features. These instances should be considered
+ * the exception, rather than the rule.
+ */