SelectionUTF16ToUnit

Formulários, interação, Unicode

Descrição

Converte uma posição UTF-16 de base zero dentro do valor de edição ativa numa contagem de unidades de seleção completas

Com fsuUTF16CodeUnit, o índice é devolvido inalterado depois de limitado

Com fsuUnicodeCodePoint ou fsuGraphemeCluster, a tabela de limites dessa unidade é construída a pedido e pesquisada, pelo que uma posição dentro de um par substituto mapeia para o respetivo ponto de código contentor e uma posição dentro de um cluster mapeia para o limite do cluster precedente

As tabelas de limites são colocadas em cache para o valor de edição atual e descartadas sempre que esse valor muda

Declaração

function SelectionUTF16ToUnit(Index: Integer;
  IndexUnit: TPDFlibFormSelectionUnit): Integer;

Parâmetros

IndexPosição UTF-16 com base zero, limitada ao intervalo de 0 até ao comprimento atual do valor
IndexUnitUnidade de seleção em que o resultado é contado

Valor devolvido

Devolve o número de pontos de código ou aglomerados de grafemas completos que precedem a posição UTF-16, ou o próprio índice limitado para fsuUTF16CodeUnit

Exemplo

// A surrogate pair counts as one code point unit
Session.SetEditValue('A' + WideChar($D83D) + WideChar($DE00) + 'B');
CaretUnits := Session.SelectionUTF16ToUnit(3, fsuUnicodeCodePoint);
// CaretUnits = 2

Consulte também

SelectionUnitToUTF16, GetSelectionRange, SetSelectionRange, TPDFlibFormSelectionUnit, TPDFlibFormSession