Как правильно отображать корейский текст с помощью TextOut?

Я компилирую с директивой UNICODE, поэтому все CStrings в Unicode. Если я помещу «봉재» в CString, выберу шрифт с «Arial», а затем использую TextOut или TextOutW для отображения этого текста, отобразятся два поля.

Если я добавлю латинские символы в текст, например. «봉재 ABC», затем на дисплее появляется два прямоугольника, за которыми следует «ABC».

Однако, если я добавлю в текст некоторые другие символы CJKV, например. «봉재 / 元», затем на дисплее отображается текст моей CString.

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

Как я могу заставить TextOut всегда заменять правильный шрифт или иначе отображать текст последовательно?


person gfindlay    schedule 28.01.2016    source источник
comment
техническая гнида: восточные и европейские буквы не при чем. Если мы говорим о Unicode, то есть CJKV (китайский, японский, корейский и вьетнамский) как универсальный язык, который использует то, что Unicode называет идеографическими глифами, и есть латиница (несколько блоков). Если в вашем вопросе используется корейский язык, спросите о корейском языке. Тем не менее: показать код. Без минимального примера, демонстрирующего, что вы пытаетесь сделать, людям приходится гадать, а поскольку их время тоже ценно, они, вероятно, перейдут к вопросу, который не требует догадок.   -  person Mike 'Pomax' Kamermans    schedule 29.01.2016


Ответы (1)


Обратите внимание, что «Arial» вообще не поддерживает CJKV, это просто латинский шрифт. Если вам нужна более широкая поддержка Unicode при сохранении внешнего вида шрифта Arial, используйте «Arial Unicode». В противном случае используйте другой шрифт, для которого вы сначала убедитесь, что он содержит все глифы, которые вам нужно отобразить.

person Mike 'Pomax' Kamermans    schedule 28.01.2016