양방향 문자열에서 캐럿 표시
단방향 텍스트에서는 문자의 선행 가장자리가 이전 문자의 후행 가장자리와 같은 위치에 있기 때문에 캐리트 위치가 모호하지 않습니다. 그러나 양방향 텍스트에서 반대 방향의 실행 간 캐럿 위치는 애매합니다. 예를 들어 왼쪽에서 오른쪽 단락 "hellosalaam"에서 "hello"의 마지막 문자는 "salaam"의 첫 글자 바로 앞에 섰습니다. 캐리트를 표시하는 가장 좋은 위치는 "hello"의 "o"를 따르는지 또는 "salaam"의 "s" 앞에 오는 것으로 간주되는지에 따라 달라집니다.
Uniscribe는 다음 표에 표시된 캐리트 위치 지정 규칙을 사용합니다.
상황 | 시각적 캐럿 위치 설정 |
---|---|
입력 | 입력한 마지막 문자의 후행 가장자리입니다. |
붙여넣기 | 붙여넣은 마지막 문자의 후행 가장자리입니다. |
캐리트 진행 | 마지막 문자의 후행 가장자리가 전달되었습니다. |
Caret 사용 중지 | 마지막 문자의 전방 가장자리가 넘어갔습니다. |
집 | 선의 가장 앞쪽 가장자리입니다. |
끝 | 선의 후행 가장자리입니다. |
캐럿은 다음 예제와 같이 배치할 수 있습니다.
if (fAdvancing) {
ScriptCPtoX(
iCharPos - 1, TRUE,
cChars, cGlyphs, &wLogClust, &sva, &iAdvance, &sa, &iCaretX
);
} else {
ScriptCPtoX(
iCharPos, FALSE,
cChars, cGlyphs, &wLogClust, &sva, &iAdvance, &sa, &iCaretX
);
}
아래와 같이 fAdvancing 값이 TRUE 또는 FALSE제한되면 캐럿의 위치 지정이 더 간단할 수 있습니다.
ScriptCPtoX(
iCharPos - fAdvancing, fAdvancing,
cChars, cGlyphs, &wLogClust, &sva, &iAdvance, &sa, &iCaretX
);
ScriptCPtoX 범위를 벗어난 위치를 논리적으로 처리합니다. iCharPos<0에 대한 실행의 선행 가장자리와 iCharPos>= 길이에 대한 실행의 후행 가장자리를 반환합니다. 자세한 내용은 캐럿 배치 및 적중 테스트 관리를 참조하세요.
관련 항목