プロジェクトでフォント「Consolas」および/または「Courier New」を使用して、MS-DOS のような環境を描画します。このプロジェクトでは、(TCanvas の) TextOut を使用して Box Drawing 文字を 1 つのステートメントで順番に印刷すると、すべて問題ありません。たとえば、「────────」と印刷されますが、各文字を指定して印刷すると個別に、各文字の間に「----------」のようなギャップがあります。手動でテストする例を次に示します。
...
Canvas.Font.Size := 12;
w := Canvas.TextWidth('╬');
h := Canvas.TextHeight('╬');
Canvas.TextOut(100, 100, '╬╬');
Canvas.TextOut(100, 100 + h, '╬');
Canvas.TextOut(100 + w, 100 + h, '╬');
Canvas.TextOut(100, 100 + h * 2, '╬');
Canvas.TextOut(100 + w, 100 + h * 2, '╬');
出力は次のとおりです。
ご覧のとおり、縦はきれいにつながっていますが、横は隙間があります。
どうすれば修正できますか?必要なものを配列に描画すると、手順によって次のように配列が出力されることに注意してください。
th := Canvas.TextHeight('A');
tw := Canvas.TextWidth('A');
for i := 0 to MaxWidth - 1 do
for j := 0 to MaxHeight - 1 do
begin
Canvas.Brush.Color := fChars[i, j].BGColor;
Canvas.Font.Color := fChars[i, j].FGColor;
Canvas.TextOut(i * tw, j * th, fChars[i, j].Character);
end;
