Как получить правильный рендеринг японского шрифта, используя английскую локаль под Windows

1766
Nicolas Goy

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

Если я установлю свой язык отображения на японский, выйду из системы и снова войду в систему, проблема исчезнет.

Запрашиваемый шрифт (выбранный в пользовательском интерфейсе приложения) - это Segoe UI. Для рендеринга используются шрифты MS Mincho для хирагана и SimSun для кандзи.

Я заглянул в реестр на

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink

И пользовательский интерфейс Segoe имеет правильную запись:

TAHOMA.TTF,Tahoma MEIRYO.TTC,Meiryo UI,128,96 MEIRYO.TTC,Meiryo UI MSGOTHIC.TTC,MS UI Gothic MSJH.TTC,Microsoft JhengHei UI,128,96 MSJH.TTC,Microsoft JhengHei UI MSYH.TTC,Microsoft YaHei UI,128,96 MSYH.TTC,Microsoft YaHei UI MALGUN.TTF,Malgun Gothic,128,96 MALGUN.TTF,Malgun Gothic MINGLIU.TTC,PMingLiU SIMSUN.TTC,SimSun GULIM.TTC,Gulim YUGOTHM.TTC,Yu Gothic UI,128,96 YUGOTHM.TTC,Yu Gothic UI SEGUISYM.TTF,Segoe UI Symbol

SimSun указан в списке, но в MS UI Gothic и YaHei есть эти персонажи.

Некоторые ссылки, которые я проверил:

Плохой рендеринг:

результат в блокноте и emclient

3
Uniscribe не имеет контекста для текста и поэтому не знает, какой шрифт «должен» быть правильным. Ignacio Vazquez-Abrams 6 лет назад 0
Дело в том, что все работает нормально, используя японский язык для отображения Windows, поэтому некоторые настройки должны быть затронуты. Nicolas Goy 6 лет назад 0

1 ответ на вопрос

2
harrymc

Проблема может быть в приложениях, которые вы используете, выбирая неправильный шрифт, потому что ваш язык английский, или это может быть из-за того, что Windows кэширует неправильный шрифт.

Очень старое решение, которое может все еще работать, - это создать файл с именем 火.txt(или похожим, если это не японский язык, как я не знаю ни одного) и сохранить его на рабочем столе, а затем перезагрузить. Логика здесь в том, что при загрузке Windows она будет кэшировать правильный шрифт.


Другим старым методом является изменение языкового стандарта системы на японский, а затем обратно на английский без перезагрузки, что, вероятно, работает путем аннулирования кэша шрифтов.


Более современное решение - заставить приложения думать, что они были запущены в японском языке. Утилита, которая упрощает это, является бесплатным эмулятором локали .

Locale Emulator

Ни одно из этих решений ничего не изменило. Я надеялся с эмулятором локали, так как проблема не во всех приложениях, но она также не работала. Nicolas Goy 6 лет назад 0
Вот еще два: [Ntlea] (https://ntlea.codeplex.com/) и [thcrap] (https://gist.github.com/nmlgc/0a3d1b5ce4804bdebc29). Кажется, у многих людей была такая же проблема. harrymc 6 лет назад 0
На самом деле я идиот, работает эмулятор локали, но приложение, с которым я его тестировал, имело фоновый процесс. Как только этот фоновый процесс убит и приложение перезапущено с эмулятором локали, оно работает. Nicolas Goy 6 лет назад 0
Я рад, что это сработало для вас. harrymc 6 лет назад 0

Похожие вопросы