Я пишу простой рендеринга растрового шрифта для OpenGL, и я бы хотел отобразить и Unicode. Однако во многих шрифтах некоторые символы отсутствуют и отображаются как квадраты. Поэтому они теряют пространство в моей текстуре, и я хочу избавиться от них. Есть ли функция WinAPI для определения того, будет ли определенный символ отображаться как квадрат tofu с использованием определенного шрифта?В Windows, как определить, отображается ли символ Юникода как квадрат (тофу)?
Я использую GDI, я делаю закадрового растрового изображения с помощью CreateDIBSection
, а затем получить шрифт с помощью CreateFontIndirect
и визуализации глифы использованием ExtTextOutW
.
До сих пор я думал об обнаружении тофу в растрированной форме (путем сравнения пикселей), который работает, но я думаю, что это не очень приятно. Это также требует, чтобы я получил некоторый символ Юникода, которого данный шрифт точно не имеет, чтобы получить «шаблон» для сравнения. Наверное, я рано или поздно попаду в беду.
Задайте [GetFontUnicodeRanges()] (https://msdn.microsoft.com/en-us/library/windows/desktop/dd144887 (v = vs.85) .aspx)? –
@AlexK. поддерживает ли это символы, отличные от BMP? Структура WCRANGE не резервирует суррогатные пары ... – andlabs
Как вы готовите текстуры? GDI? GDI +? DirectWrite? Ручная обработка файлов TTF/OTF? – andlabs