Как исправить символы Unicode, которые не отображаются в .NET Graphics DrawString? - PullRequest
0 голосов
/ 19 сентября 2019

Я использую 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;
...