CJK テキストエディタにおけるカーソル位置計算の問題と解決
角括弧 ) などの CJK 文字でカーソル位置がずれる現象が発生。
原因
CJK カーニング(文字間調整)により、測定値と実際の表示幅が一致しない。
理由:
失敗した解決策
Canvas での測定: 実際の DOM と測定値が一致しない
DOM 要素での測定: カーニングを反映できない
補正係数の追加: 文脈依存のため不可能
正解: Range API の使用
ブラウザのレンダリングエンジンが計算した実際の位置を取得する。
角括弧 ) などの CJK 文字でカーソル位置がずれる現象が発生。
CJK カーニング(文字間調整)により、測定値と実際の表示幅が一致しない。
理由:
ブラウザのレンダリングエンジンが計算した実際の位置を取得する。