在雙向字串中顯示插入號
在單向文字中,插入號位置沒有模棱兩可,因為字元的前置邊緣與上一個字元的尾端邊緣相同。 不過,在雙向文字中,相反方向執行之間的插入號位置模棱兩可。 例如,在由左至右段落 「hellosalaam」 中,「hello」 的最後一個字母緊接在 「salaam」 的第一個字母前面。 顯示插入號的最佳位置取決於是否考慮遵循 「hello」 的 「o」 或 「s」 的 「s」 前面。
Uniscribe 會使用下一個表格中顯示的插入號定位慣例。
情況 | 視覺插入號放置 |
---|---|
輸入 | 最後一個字元類型的尾端邊緣。 |
粘貼 | 貼上最後一個字元的尾端邊緣。 |
插入號前進 | 最後一個字元的尾端邊緣已傳遞。 |
插入號淘汰 | 最後一個字元的前置邊緣已傳遞。 |
首頁 | 線條的前置邊緣。 |
結束 | 線條的尾端邊緣。 |
插入號可以定位,如下列範例所示:
if (fAdvancing) {
ScriptCPtoX(
iCharPos - 1, TRUE,
cChars, cGlyphs, &wLogClust, &sva, &iAdvance, &sa, &iCaretX
);
} else {
ScriptCPtoX(
iCharPos, FALSE,
cChars, cGlyphs, &wLogClust, &sva, &iAdvance, &sa, &iCaretX
);
}
插入號的位置可能更簡單,如下所示,假設限制為TRUE或FALSE的fAdvancing值:
ScriptCPtoX(
iCharPos - fAdvancing, fAdvancing,
cChars, cGlyphs, &wLogClust, &sva, &iAdvance, &sa, &iCaretX
);
ScriptCPtoX 會以邏輯方式處理超出範圍的位置。 它會傳回iCharPos0 回合的前置邊緣,以及iCharPos>< = 長度的執行尾端邊緣。 如需詳細資訊,請參閱 管理插入號放置和點擊測試
相關主題