リッチテキストボックスに泣かされる

顧客に作っているアプリケーションで、帳票に出力される内容(テキスト)を入力するのに、リッチテキストボックス(RichTextBox)を使用しています。結構な長文(契約の但し書きみたいな文章)を入力するとのことなので、普通のテキストボックスよりはいいだろう、テキストエディタ的だろう、ということでリッチテキストボックスにしたのですが・・・。
あるとき、お客さんより担当SEに連絡がありました。
「入力した文章が、帳票に印刷されると表示が変わっている!」ということでした。要するに、リッチテキストボックスにたくさん文章を入力したんだけど、それを帳票で印刷してみると、自分が(お客さん)が入力した"とおり"に表示されていない、ということでした。
帳票にはクリスタルレポートを使用しています。
これに対応することになったので、

  1. リッチテキストボックスとクリスタルレポートのフォントをプロポーショナルじゃないフォントにする。
  2. リッチテキストボックスで入力できる1行の文字数と、クリスタルレポートの1行の文字数を同じにする。

という対応をしました。これで大丈夫だと思っていました。
ですが、テストをやっていた担当SEが「なんか、前に入力した文字列(データベースから引っ張ってきて表示させた文字列)と、新しく入力した文字のフォントが"微妙"に違うんですけど・・・」と言ってきました。しかもそのせいで、リッチテキストボックスで1行に入力できる文字数と、クリスタルレポートで表示する1行の文字数が変わってきてると・・・。でも、リッチテキストボックスのフォント設定は正しいよなあ・・・、なんでだろう・・・、というか、なんだこれ!? もしかしてMSのバグですか?!
・・・と、バグであっても何とかしないといけないので、いろいろ調査しているとこんなのが見つかりました。
RichTextBox.LanguageOption プロパティ
「何だ、このプロパティ?」と思いながら、さらに調べてみると、
全ては時の中に… : 【VB.NET】リッチテキストのフォントが勝手に変更されるのを抑制する
なに!勝手にフォントが変わるだと!上記ブログを参考にプログラムを直してみるとビンゴでした。えー、なんで勝手にフォントを変えるんだよー。実はWordにもこんな機能(?)があるんだとか。
これで今日一日泣かされました。