等幅フォントを使用してテーブルをグラフィックス オブジェクトにレンダリングし、スペース文字を使用してテキストをパディングしていたテキストの列を揃えています。
フォントをプロポーショナル フォントに変更するように依頼されましたが、当然のことですが、列が整列しなくなりました。
次のような文字列が与えられた場合
"Bill-of-Material Edits\r\n------------------------------\r\n200 510024 Door 24\" x 58\"\r\n 3 530058 Panel 58\" x 58\"\r\n";
上の行から 200 の値の 1 の位置の下に 3 つの行が適切に配置され、その後 510024 が 530058 の真上に配置されるようにするにはどうすればよいですか?
文字列を描画するために使用するコードは次のとおりです。
var fnt = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Regular, GraphicsUnit.Point);
StringFormat strFormat = new StringFormat(StringFormat.GenericTypographic);
strFormat.Alignment = StringAlignment.Near;
string text = "Bill-of-Material Edits\r\n------------------------------\r\n200 510024 Door 24\" x 58\"\r\n 3 530058 Panel 58\" x 58\"\r\n";
g.DrawString(text, fnt, Brushes.Black, new RectangleF(10f, 10f, 38.1062851f, 12.9231777f), strFormat);
スペースを Unicode 制御文字 (0x0080) などの他の文字に置き換えてみましたが、役に立ちませんでした。また、 {0,10} のようなフォーマッタで string.Format() を使用してみましたが、どちらも役に立ちませんでした。
列を整列させるにはどうすればよいですか?