Podemos experimentar nesta string (colá-la no bloco de notas ou algo assim):
a!b@c#d$e%f^g&h*i(j)k-l=m_n+o{p}q[r]s|t\u'v~w/x<y>z?0.1;2'3:4"5
Descobri que !
, $
, %
, (
, -
, +
, {
, }
, [
, |
, \
, e ?
têm algum efeito na quebra de linha ou no agrupamento de caracteres. Estranhamente, parece haver vários tipos de influência - eles variam se eles podem quebrar linhas e se uma Seta de Controle + pára antes ou depois. (E a omissão de ]
não é um acidente. A chave de abertura tem propriedades especiais, mas a de fechamento não é muito).
Cada controle de edição no Windows tem uma quebra de palavras procedimento . Tal procedimento é responsável por:
- Determinar o comportamento de um determinado personagem em relação à quebra de linha
- Determinando se um caractere é um delimitador
- Encontrando o início da próxima / palavra anterior / cluster em relação à posição atual
A maioria dos aplicativos usa o padrão do Windows, que, até onde eu sei, não é configurável. Um determinado controle de edição ou procedimento de quebra de palavras do controle rich text pode ser definido com o EM_SETWORDBREAKPROC
mensagem da janela. Geralmente isso seria feito pelo aplicativo que possui o controle, uma vez que o endereço do procedimento só será garantido válido dentro desse processo. Programaticamente, você pode criar um thread dentro do processo de um aplicativo de destino que defina um procedimento de quebra personalizado nos controles de destino, mas não parece ser uma maneira menos complicada.