Mostrar el símbolo de intercalación en cadenas bidireccionales

En el texto unidireccional, la posición del símbolo de intercalación no tiene ambigüedad porque el borde inicial de un carácter está en el mismo lugar que el borde final del carácter anterior. Sin embargo, en el texto bidireccional, la posición del símbolo de intercalación entre las ejecuciones de dirección opuesta es ambigua. Por ejemplo, en el párrafo de izquierda a derecha "hellosalaam", la última letra de "hello" precede inmediatamente a la primera letra de "salaam". La mejor posición en la que mostrar el símbolo de intercalación depende de si se considera que sigue la "o" de "hello" o que precede a "s" de "salaam".

Uniscribe usa las convenciones de posicionamiento del símbolo de intercalación que se muestran en la tabla siguiente.

Situación Selección de ubicación del símbolo de intercalación visual
Escritura Borde final del último carácter escrito.
Pegar Borde final del último carácter pegado.
Avance del símbolo de intercalación Borde final del último carácter pasado.
Retirada del símbolo de intercalación Borde inicial del último carácter pasado.
Página principal Borde inicial de la línea.
End Borde final de la línea.

 

El símbolo de intercalación se puede colocar como se muestra en el ejemplo siguiente:

if (fAdvancing) {
    ScriptCPtoX(
        iCharPos - 1, TRUE, 
        cChars, cGlyphs, &wLogClust, &sva, &iAdvance, &sa, &iCaretX
        );
} else {
    ScriptCPtoX(
        iCharPos, FALSE, 
        cChars, cGlyphs, &wLogClust, &sva, &iAdvance, &sa, &iCaretX
        );
}

El posicionamiento del símbolo de intercalación puede ser más sencillo, como se muestra a continuación, dado un valor de fAdvancing restringido a TRUE o FALSE:

ScriptCPtoX(
    iCharPos - fAdvancing, fAdvancing, 
    cChars, cGlyphs, &wLogClust, &sva, &iAdvance, &sa, &iCaretX
    );

ScriptCPtoX controla las posiciones fuera del intervalo lógicamente. Devuelve el borde inicial de la ejecución para iCharPos<0 y el borde final de la ejecución para iCharPos>= longitud. Para obtener más información, consulte Administración de la selección de selección de inserción y pruebas de posicionamiento.

Uso de Uniscribe