Я использую Graphics.DrawString для рендеринга строки с некоторыми символами Unicode (если это имеет значение, это символы транзита MICR и символы on-us, U + 2446 и U + 2448).Используемый шрифт создается с помощью семейства шрифтов GenericMonospace.
Код работает нормально и без проблем рисует символы при работе на моем локальном компьютере разработчика в режиме отладки.Однако, когда он запускается на компьютере QA, он работает без ошибок, но вместо символов Unicode рисует пустые поля.
Это то, что можно исправить в коде (например, используя определенный шрифт / гарнитуру, возможно Courier New), а не семейство GenericMonospace)?Или это, как я подозреваю, проблема, которую нужно исправить, установив что-то дополнительное на машину QA (если да, то что)?Или я что-то упускаю, например, параметры сборки или функции Windows, которые отличаются?
Вот код, который отлично работает на моем локальном компьютере, но печатает поля на компьютере QA:
Bitmap img = new Bitmap(400, 400);
Graphics gr = Graphics.FromImage(img);
gr.FillRectangle(Brushes.White, 0, 0, 400, 400);
string str1 = String.Format(
"{0} {1} {2} {3}",
char.ConvertFromUtf32(9286),
char.ConvertFromUtf32(9287),
char.ConvertFromUtf32(9288),
char.ConvertFromUtf32(9289));
try
{
Font f1 = new Font(FontFamily.GenericMonospace, 12);
gr.DrawString(str1, f1, Brushes.Black, new PointF(10, 10));
}
catch (Exception) { }
// image has MICR symbols on local but boxes on QA machine
pictureBox1.Image = img;