ComboBox с пользовательским интерфейсом Segoe и текстом на японском языке

В настоящее время я пытаюсь улучшить внешний вид своего приложения C# при запуске в Windows Vista или Windows 7. По умолчанию приложения Windows Forms используют шрифт Microsoft Sans Serif, который не соответствует правильно азиатскому чистому шрифту. шрифты, такие как Meiryo.

Чтобы решить эту проблему, я установил для всех шрифтов Segoe UI (или SystemFonts.MessageBoxFont). Это работает довольно хорошо для большинства элементов управления, но я заметил, что это вызывает странные сбои отображения, по крайней мере, для элемента управления ComboBox:

Пример

ComboBox не может правильно отобразить этот список. Символы странным образом обрезаются, и выбранный элемент выглядит так, будто ему требуется больше места, чем изначально зарезервировано.

Есть ли какое-либо решение или обходной путь для этого поведения?

Если вы хотите попробовать это сами, вот мой список предметов:

  • テスト
  • てすと
  • 実験

Спасибо!


person Buoysel    schedule 11.11.2010    source источник
comment
Мне повезло с «Arial Unicode MS» при отображении японских и китайских символов.   -  person Stewbob    schedule 11.11.2010


Ответы (2)


Воспроизводю на Win7. Судя по всему, что-то не так в программе отображения шрифтов, шрифт-заменитель явно слишком большой. Примечательно, что проблема не возникает с шрифтом Microsoft Sans Serif. И это прекрасно отображается на моей машине.

Трудно дать здесь дешевый совет, вам действительно нужна помощь службы поддержки Microsoft. Вы также должны проверить это на японской версии Windows, шансы на то, что в ней будут шрифты, не требующие сопоставления, приличные.

person Hans Passant    schedule 11.11.2010
comment
Хм, похоже, невозможно сообщить об этом в Microsoft. Веб-сайт поддержки Microsoft хочет взять с меня около 400 долларов за один вопрос... - person Buoysel; 12.11.2010
comment
Да, вы получите свои деньги обратно, когда они узнают, что это их ошибка. Это возможно. Вам также очень нужна эта японская версия Windows, не отправляйте ее без тестирования. Подписка MSDN — лучший способ получить ее, подписка также включает в себя два бесплатных обращения в службу поддержки. - person Hans Passant; 12.11.2010
comment
Я все еще учусь, поэтому мои приложения не имеют коммерческого назначения, и я не могу позволить себе подписку MSDN. Интересно, действительно ли нет обходного пути для решения этой проблемы? - person Buoysel; 16.11.2010
comment
Ну, если это на самом деле проблема на японской машине, то я уверен, что они будут рады закрыть глаза на небольшой недостаток. - person Hans Passant; 16.11.2010
comment
Я не уверен, почему японская версия Windows актуальна. Вполне допустимо и возможно, что автор вопроса разрабатывает словарь японского языка для англоязычных студентов, изучающих японский язык. - person PandaWood; 21.01.2011

У меня была аналогичная проблема (но с некоторыми другими символами и шрифтом), не уверен, что это сработает для вас, но довольно просто реализовать событие DrawItem и нарисовать текст самостоятельно.

Мы используем метод, подобный этому: https://stackoverflow.com/a/857232/417721

person Adam Butler    schedule 02.09.2013