Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR対象
カテゴリ
PR の背景
#1974 で報告されている問題を修正します。
仕様・動作説明
CTextDrawer::DispText()
では引数として入力された描画対象のテキスト (pData
) のうち、描画領域 (`hdc') の左側にはみ出す分の描画をスキップするようになっていますが、本来描画しなければいけない文字までスキップされてしまう場合があることが分かったため処理を修正します。修正対象となる処理は以下の所で、
sakura/sakura_core/view/CTextDrawer.cpp
Lines 96 to 103 in 53ea30b
変数の意味は以下のようになっています。
x
nDx
nLeftLayout
nBeforeLayout
nBeforeLogic
プロポーショナルフォント対応以前の「1レイアウト単位=半角1文字分(桁)」となっていた時は現状の処理で問題ないように見えますが、「1レイアウト単位=1ピクセル」となったことで、はみ出していない文字までスキップされるようになっています。
対策内容:
要素の位置関係:
問題が発生しないギリギリの状態 (x == -1, nLeftLayout == 0):
問題が発生する状態 (x が -2 以下, nLeftLayout > 0) (この状態から左へスクロールすると文字欠けが起きる):
PR の影響範囲
テスト内容
本項に添付の ini ファイル、テキストファイルを使って以下を確認します。
MS Pゴシック
に変更して上記と同じ確認をします。添付ファイル:
sakura.zip
issues_1974_test.txt
関連 issue, PR
#1974
参考資料