Compartilhar via


unidades de texto da Automação da Interface do Usuário

Este tópico descreve as unidades de texto com suporte no padrão de controle TextRange da Automação da Interface do Usuário da Microsoft. Os clientes e os provedores de Automação da Interface do Usuário usam unidades de texto para especificar a quantidade pela qual o tamanho de um intervalo de texto deve ser movido ou alterado.

Elementos da API de unidade de texto

A API de Automação da Interface do Usuário inclui os seguintes métodos que exigem que uma unidade de texto seja especificada:

A enumeração TextUnit define as unidades de texto com suporte nos intervalos de texto da Automação da Interface do Usuário. Para especificar a unidade de texto, um membro da enumeração TextUnit é especificado em uma chamada a um método ITextRangeProvider ou IUIAutomationTextRange. As unidades de texto, da menor para a maior, são as seguintes:

Se determinado controle baseado em texto não der suporte à unidade de texto especificada, o provedor deverá responder substituindo a próxima unidade de texto maior que tenha suporte no controle. Por exemplo, se TextUnit_Paragraph for especificado, mas não houver suporte para ela, o método poderá substituir TextUnit_Page ou TextUnit_Document.

As características linguísticas do texto de origem podem dificultar para um provedor determinar os limites de texto com base na unidade de texto especificada. Para obter ajuda a fim de determinar os limites de texto, um provedor pode usar as funções da API Uniscribe, como ScriptBreak. Para obter mais informações, confira Uniscribe.

Inclusividade do ponto de extremidade

Um terminal de unidade de texto pode servir como um terminal para intervalos de texto adjacentes do mesmo tipo Inicial Final. Se o final de uma unidade de texto for o início de outra unidade de texto, o intervalo que contém o terminal Final não compartilhará nenhum atributo ou objeto do intervalo adjacente que contém o ponto de extremidade Inicial.

Por exemplo, um fluxo de texto, “Olá mundo contém duas unidades de palavras com atributos de peso de fonte diferentes (normal e negrito) . Neste caso, o ponto de extremidade End da unidade de palavras "Olá" e o ponto de extremidade Start da unidade de palavras "world" são os mesmos, o que resulta no seguinte:

  • O intervalo de “Olá” não compartilha o atributo negrito da unidade de palavra “mundo” e não retorna o valor de atributo misto para o atributo de texto de espessura da fonte.
  • O intervalo de "mundo" tem um só peso de fonte (negrito) e não compartilha o peso da fonte da unidade de palavra anterior "Olá".

Este é outro exemplo no qual um fluxo de texto contém duas unidades de palavras, uma das quais é um link: [Foo]() Bar. Nesse caso, o terminal da unidade de palavra e o terminal da unidade de palavra “Bar” são os mesmos, o que resulta no seguinte: Final [Foo]() Inicial.

  • O link pertence ao intervalo de texto que contém “Foo”.
  • O link é elemento filho do intervalo de texto “Foo” e fica entre o ITextProvider.
  • O intervalo de texto “Bar” não tem elementos filho e fica entre o ITextProvider.

Observações adicionais:

Um intervalo de degeneração (vazio) em um limite de unidade de texto com um intervalo de texto do mesmo tipo assume propriedades da unidade de texto imediatamente adjacente.

A chamada a em um intervalo de degeneração em um limite de unidade de texto com um intervalo de texto do mesmo tipo expande o intervalo de degeneração para a unidade de texto seguinte IUIAutomationTextRange::ExpandToEnclosingUnit.

Descrições da unidade de texto

Esta seção descreve cada uma das unidades de texto compatíveis com a Automação da Interface do Usuário.

Caracter

TextUnit_Character é uma unidade linguística de texto que representa um caracter individual. A definição linguística de um caracter varia conforme o idioma. No inglês dos EUA, um caracter costuma ser acompanhado por um espaço ou outro caracter, como um sinal de pontuação, um número ou uma letra.

Os caracteres de controle, como retornos de carro e a marca LTM (da esquerda para a direita) Unicode, não devem ser considerados caracteres, mas podem ser incluídos em um intervalo de texto normalizado com base na unidade de texto de caracter.

Sinais de pontuação e caracteres de quebra de palavra devem ser considerados caracteres, como espaços, por exemplo.

Formatar

TextUnit_Format é usado para posicionar o limite de um intervalo de texto com base nos atributos de formatação do texto. Por exemplo, se, no momento, um intervalo de texto estiver posicionado em um só caracter de uma palavra, a especificação em uma chamada expandirá o intervalo para incluir todo o texto que compartilha todos os mesmos atributos que o caractere individual TextUnit_Format IUIAutomationTextRange::ExpandToEnclosingUnit. O intervalo de texto resultante pode ou não incluir a palavra inteira. Além disso, usando a unidade de formato de texto não expandirá um intervalo de texto além dos limites de um objeto incorporado, como uma imagem ou um hiperlink.

Ao contrário das outras unidades de texto, que incluem as unidades de texto menores do que as mesmas, pode ser menor ou maior que as outras unidades TextUnit_Format. Por exemplo, se um documento inteiro compartilhar os atributos de texto e não contiver objetos incorporados, a expansão de um intervalo de texto criará um intervalo que abrangerá todo o documento, enquanto a expansão do intervalo de texto criará um intervalo menor TextUnit_Format TextUnit_Word.

Palavra

TextUnit_Word é uma unidade linguística de texto que representa uma única palavra inteira. A definição linguística de uma palavra varia de acordo com o idioma. No inglês dos EUA, as palavras normalmente são acompanhadas por espaços ou caracteres de pontuação.

Quando é usado para definir o limite de um intervalo de texto, o intervalo de texto resultante deve incluir todos os caracteres de quebra de palavra presentes no final da palavra, mas antes do início da próxima palavra TextUnit_Word.

Linha

TextUnit_Line é uma unidade de texto que representa uma só linha, conforme apresentado no visor de controle. Ao usar para definir o limite de um intervalo de texto, um provedor deve defini-lo imediatamente após o ponto onde um caractere de controle quebra a linha ou onde o visor de controle quebra o texto em uma nova linha TextUnit_Line. O limite deve ser definido no ponto onde uma nova linha começa.

Parágrafo

TextUnit_Paragraph é uma unidade linguística de texto que representa um parágrafo completo. Um parágrafo deve começar logo antes do primeiro caracter do mesmo e normalmente deve terminar logo após o último. Todas as linhas vazias após um parágrafo devem ser mescladas a menos que algo na fonte do texto indique o contrário. Normalmente, o limite final de um parágrafo também marca o limite final de uma unidade de texto TextUnit_Line.

Página

TextUnit_Page representa uma página de texto completa de um documento. Os limites de uma página devem ser definidos nos pontos imediatos onde uma página começa e termina.

Documento

TextUnit_Document representa todo o conteúdo de um documento, conforme o suporte fornecido pelo padrão de controle Text. Nenhum texto deve existir fora de um intervalo de texto que contenha um documento. Todos os objetos inseridos em um documento, como anotações que cruzam um limite de página, devem ser tratados como objetos incorporados e não como parte do conteúdo de texto.

Outros intervalos potenciais

A especificação atual do padrão de controle não permite que novos valores de unidade de texto sejam enumerados nem que os existentes sejam redefinidos TextRange TextUnit. Para outros intervalos potenciais, como cabeçalhos e anotações, um provedor deve expor esses intervalos como objetos incorporados com um intervalo de texto associado. Dessa forma, você também pode adicionar suporte aos padrões de controle apropriados. Essa solução é mais flexível e extensível do que a definição de novas unidades de texto.

Referência

TextPatternRangeEndpoint

ITextRangeProvider::GetChildren

Conceitual

Suporte da Automação da Interface do Usuário ao conteúdo textual

Como trabalhar com controles baseados em texto.