Freigeben über


Texteinheiten für die Benutzeroberflächenautomatisierung

In diesem Thema werden die Texteinheiten beschrieben, die vom Microsoft Benutzeroberflächenautomatisierung TextRange-Steuerelementmuster unterstützt werden. Benutzeroberflächenautomatisierungsanbieter und -clients verwenden Texteinheiten, um den Betrag anzugeben, um den die Größe eines Textbereichs verschoben oder geändert werden soll.

API-Elemente der Texteinheit

Die Benutzeroberflächenautomatisierung-API umfasst die folgenden Methoden, für die eine Texteinheit angegeben werden muss:

Die TextUnit-Enumeration definiert die Texteinheiten, die von Textbereichen der Benutzeroberflächenautomatisierung unterstützt werden. Um die Texteinheit anzugeben, wird ein Element der TextUnit-Enumeration in einem Aufruf einer ITextRangeProvider- oder IUIAutomationTextRange-Methode angegeben. Die Texteinheiten lauten, von der kleinsten zur größten, wie folgt:

Wenn ein bestimmtes textbasiertes Steuerelement die angegebene Texteinheit nicht unterstützt, sollte der Anbieter reagieren und sie durch die nächste größere Texteinheit ersetzen, die vom Steuerelement unterstützt wird. Wenn beispielsweise TextUnit_Paragraph angegeben, aber nicht unterstützt wird, kann die Methode sie durch TextUnit_Page oder TextUnit_Document ersetzen.

Aufgrund der linguistischen Merkmale des Quelltexts kann es für Anbieter schwierig sein, Textbegrenzungen anhand der angegebenen Texteinheit zu bestimmen. Zur Unterstützung bei der Bestimmung von Textgrenzen kann ein Anbieter Uniscribe-API-Funktionen wie ScriptBreak verwenden. Weitere Informationen finden Sie unter Uniscribe.

Endpunkteinbeziehung

Der Endpunkt einer Texteinheit kann sowohl als Start- als auch alsEnd-Endpunkt für angrenzende Textbereiche desselben Typs dienen. Wenn das Ende einer Texteinheit gleichzeitig der Anfang einer anderen Texteinheit ist, hat der Bereich, der den End-Endpunkt enthält, keine Attribute oder Objekte mit dem angrenzenden Bereich, der den Start-Endpunkt enthält, gemeinsam.

Der Textstream „Hello world“ enthält z. B. zwei Worteinheiten mit unterschiedlichen Schriftbreitenattributen (normal und fett). In diesem Fall sind der End-Endpunkt der Worteinheit „Hello“ und der Start-Endpunkt der Worteinheit „world“ identisch, was zu folgendem Ergebnis führt:

  • Der Bereich von „Hello“ verfügt nicht über das Attribut „fett“ der Worteinheit „world“ und gibt nicht den gemischten Attributwert für das Textattribut „Schriftbreite“ zurück.
  • Der Bereich „world“ weist eine einzelne Schriftbreite (fett) und nicht die Schriftbreite der vorangehenden Worteinheit „Hello“ auf.

Hier ist ein weiteres Beispiel, in dem ein Textstream zwei Worteinheiten enthält, von denen eine ein Link ist: [Foo]() Bar. In diesem Fall sind der End-Endpunkt der Worteinheit [Foo]() und der Start-Endpunkt der Worteinheit „Bar“ identisch, was zu folgendem Ergebnis führt:

  • Der Link gehört zum Textbereich, der „Foo“ enthält.
  • Die Verknüpfung ist ein untergeordnetes Element des Textbereichs „Foo“ und wird vom ITextProvider umschlossen.
  • Der Textbereich „Bar“ hat keine untergeordneten Elemente und wird vom ITextProvider umschlossen.

Zusätzliche Hinweise:

Ein degenerierter (leerer) Bereich an einer Texteinheitsgrenze mit einem Textbereich desselben Typs übernimmt die Eigenschaften der unmittelbar angrenzenden Texteinheit.

Durch den von IUIAutomationTextRange::ExpandToEnclosingUnit für einen degenerierten Bereich an einer Texteinheitsgrenze mit einem Textbereich desselben Typs wird der degenerierte Bereich auf die folgende Texteinheit erweitert.

Beschreibungen der Texteinheit

In diesem Abschnitt werden die einzelnen Texteinheiten beschrieben, die von der Benutzeroberflächenautomatisierung unterstützt werden.

Zeichen

TextUnit_Character ist eine linguistische Texteinheit, die ein einzelnes Zeichen darstellt. Die linguistische Definition eines Zeichens variiert je nach Sprache. Bei US-Englisch wird ein Zeichen in der Regel durch ein Leerzeichen oder ein anderes Zeichen, z. B. ein Satzzeichen, eine Zahl oder einen Buchstaben, eingefasst.

Steuerzeichen wie Wagenrücklaufzeichen und das Unicode-Zeichen Links-nach-rechts (LTM) sollten nicht als Zeichen betrachtet werden, sondern können in einem Textbereich enthalten sein, der auf der Grundlage der Zeichentexteinheit normalisiert wird.

Satzzeichen und Worttrennungszeichen wie Leerzeichen sollten als Zeichen betrachtet werden.

Format

TextUnit_Format wird verwendet, um die Grenze eines Textbereichs basierend auf den Formatierungsattributen des Texts zu positionieren. Wenn z. B. ein Textbereich derzeit auf einem einzelnen Zeichen eines Worts positioniert ist, wird durch die Angabe von TextUnit_Format in einem Aufruf von IUIAutomationTextRange::ExpandToEnclosingUnit der Textbereich so erweitert, dass er den gesamten Text einschließt, der die gleichen Attribute wie das einzelne Zeichen aufweist. Der resultierende Textbereich kann das gesamte Wort enthalten, muss es aber nicht. Außerdem wird durch die Verwendung von „TextUnit_Format“ der Textbereich nicht über die Grenze eines eingebetteten Objekts wie z. B. eines Bilds oder Links hinaus erweitert.

Im Gegensatz zu den anderen Texteinheiten, die die Texteinheiten enthalten, die kleiner als sie selbst sind, kann TextUnit_Format kleiner oder größer als die anderen Einheiten sein. Wenn beispielsweise ein gesamtes Dokument dieselben Textattribute aufweist und keine eingebetteten Objekte enthält, würde durch die Erweiterung eines Textbereichs um TextUnit_Format ein neuer Bereich erstellt, der das gesamte Dokument umfasst, während durch die Erweiterung des Textbereichs um TextUnit_Word ein kleinerer Bereich erstellt würde.

Word

TextUnit_Word ist eine linguistische Texteinheit, die ein einzelnes ganzes Wort darstellt. Die linguistische Definition eines Worts variiert je nach Sprache. Im amerikanischen Englisch werden Wörter in der Regel durch Leerzeichen oder Interpunktionszeichen begrenzt.

Wenn TextUnit_Word verwendet wird, um die Grenze eines Textbereichs festzulegen, sollte der resultierende Textbereich alle Wörtertrennzeichen enthalten, die am Wortende, doch vor dem Anfang des nächsten Worts vorhanden sind.

Linie

TextUnit_Line ist eine Texteinheit, die eine einzelne Textzeile darstellt, wie im Viewport des Steuerelements dargestellt. Wenn TextUnit_Line verwendet wird, um die Grenze eines Textbereichs festzulegen, sollten Anbieter die Grenze unmittelbar nach dem Punkt festlegen, an dem ein Steuerzeichen die Zeile unterbricht oder an dem der Viewport des Steuerelements den Text in eine neue Zeile umbricht. Die Grenze sollte dort festgelegt werden, wo eine neue Zeile beginnt.

Absatz

TextUnit_Paragraph ist eine linguistische Texteinheit, die einen vollständigen Absatz darstellt. Ein Absatz sollte unmittelbar vor dem ersten Zeichen eines Absatzes beginnen und in der Regel unmittelbar nach dem letzten Zeichen enden. Alle Leerzeilen, die auf einen Absatz folgen, sollten in den Absatz eingefügt werden, es sei denn, in der Textquelle ist etwas anderes angegeben. In der Regel markiert die Endbegrenzung eines Absatzes auch die Endbegrenzung einer TextUnit_Line-Texteinheit.

Seite

TextUnit_Page stellt eine vollständige Textseite eines Dokuments dar. Die Begrenzungen einer Seite sollten unmittelbar an den Stellen festgelegt werden, an denen eine Seite beginnt und endet.

Dokument

TextUnit_Document stellt den gesamten Inhalt eines Dokuments dar, der vom Text-Steuerelementmuster unterstützt wird. Außerhalb eines Textbereichs, der ein Dokument enthält, sollte kein Text existieren. Alle Objekte, die in ein Dokument eingefügt werden, z. B. Anmerkungen, die eine Seitengrenze überschreiten, sollten als eingebettete Objekte des Dokuments und nicht als Teil des Textinhalts des Dokuments behandelt werden.

Weitere potenzielle Bereiche

Die aktuelle TextRange-Steuerelementmusterspezifikation erlaubt weder das Hinzufügen neuer Texteinheitswerte zur TextUnit-Enumeration noch die Neudefinition der vorhandenen Texteinheitswerte. Um andere potenzielle Bereiche wie Kopfzeilen und Anmerkungen verfügbar zu machen, sollten Anbieter diese Bereiche als eingebettete Objekte mit einem verknüpften Textbereich verfügbar machen. Auf diese Weise lässt sich auch Unterstützung für die entsprechenden Steuerelementmuster hinzufügen. Diese Lösung ist flexibler und erweiterbarer als die Definition neuer Texteinheiten.

Verweis

TextPatternRangeEndpoint

ITextRangeProvider::GetChildren

Konzept

Unterstützung der Benutzeroberflächenautomatisierung für Textinhalte

Arbeiten mit textbasierten Steuerelementen