質問: C#で印字をしているのですがフォトを指定する際に 文字の間隔も指定出来ないでしょうか 現在FontDialogコントロールでフォントを指定し印刷しています その際、ワードのように文字間隔を狭くしたり、広くしたいと思うのですがC#での印刷で 印字間隔の調整は出来ないでしょうか 検索してみても、皆さん一文字ずつ分解して出力しているようなのですが、 本当にそのような出力方法しかないのでしょうか
回答: `FontDialog`とのことですので、印刷に使用しているのはWindows Formの`PrintDocument`でしょうか。 `System.Drawing.Graphics`は文字単位の横幅変更には対応していなかったかと思います。なので基本的には文字単位に分割して出力する必要があります。 一方WPF関連では`GlyphRun`が`AdvanceWidths`プロパティによってグリフ単位のアドバンス幅の調整に対応しているため、原理的には行単位でまとめて`DrawingContext`に出力することも可能です。 こちらの方が高品質な印刷結果を期待できますが、アドバンス幅の算出は自分で行う必要があるため一文字ずつ出力する場合よりも実装の工数は増えます。