印刷プログラム
ずっと使ってきた印刷プログラムをUnicode対応にするべく対応中。 というか入力はもともとXMLでやっていたのでその部分は何も変わらない。 問題はIVSへの対応だ。 職場で名簿に外字を使いまくるのをそろそろやめて, IPA mj明朝を使うことにしてはどうかと計画しているところなのだ。 しかしそれを使うメリットはIVSを使うことであり, Graphics.DrawStringはこれに対応していない。 TextRenderer.DrawTextではちゃんと異体字が表示できるのだけど, 縦方向横方向の倍率を変える方法がわからない (そもそも公式には印刷に対応していないAPIだ)。 SharpDXも使ってみてその両方に対応できることはわかったが, 印刷のときにどうやってHDCを取得するかがわからない (適当にやったらエラーになる)。 どうするのが正解なのかなあ。
縦横の倍率を変えるというのは横倍角がやりたいということではなく, 決まった枠の中に文字列を押し込めるときに, 文字の横幅だけを変化させて対応したいということだ。 生徒氏名短冊とかそれを前提に設計したフォームが多数あるのでなんとかしたい。 もちろんフォントの方でサイズを変更するのも一つの方法で, それは既に実装しているのだが, 全体的に小さい文字になるのがシャクなので。