Bug #65

Redmine Adminほぼ11年前に更新

h1. 状況(2012.12.06)

V6.28にて対応済み。

(原因)
V6.27でシーク処理の性能改善を図ったが、その際のデグレード。

V6.26以前は、シークポイント(MARK)の文字列描画を実施した後、
次に出現する文字列に備えて、事前にフォントの更新を行っておくアルゴリズムであったが、
V6.27の改善で、文字描画が必要になった時点でフォント更新を実施するアルゴリズムに変更した。
にもかかわらず、事前フォント更新の処理を廃棄し忘れていたため、
タイミング上、フォントを変更していない文字にまでフォント更新が起こってしまった。

(対処)
不要な事前フォント更新の処理を削除した。

(備考)
なお本件の対処中、以下の2つの不具合も検出したため並行対処した。
(1)シーク時、ちらつき防止用の不要文字描画の抑止機構が効いていなかった。
  →比較文字列の冒頭1バイトを片側だけ取り除いていた。
(2)マーク文字列に、ヘッダー文字列のフォントが不正に採用される場合があった。
  →シーク処理の初期値にデフォルトではなくヘッダーのフォントを採用していた。

h1. 概要(2012.12.05)


<pre>
*MARK"A"
*TEXT"B"
_
*FONT",2"
*MARK"C"
</pre>

ファイル読込み直後は 2 行目が表示する "B" はデフォルトの書体で表示されるのですが、
一度 5 行目を通過した後で左三角やシークバーで 1 行目のマークに戻り、
再び再生すると 2 行目の "B" がイタリック体で表示されました。

1 行目か 5 行目のどちらかの *MARK でも削ると "B" がイタリック体になる現象は起きませんでした。
1 行目を *TEXT にした場合も起きませんでしたが、
1 行目は *MARK のままで 5 行目を *TEXT にした場合は起きました。
また、V6.26 では起きませんでした。

戻る