Windows API выберите жирный шрифт

Я пытаюсь написать код для выбора жирного шрифта (я на самом деле хочу получить имя файла шрифта для отправки кроссплатформенному средству визуализации шрифтов, но это не слишком важно). Я использую CreateFont(), устанавливающий cWeight в FW_BOLD и pszFaceName в "Arial". Я выбираю этот шрифт в DC и использую GetTextFace(), чтобы проверить, какой шрифт был фактически выбран. Результат Arial. Я был удивлен, что этот шрифт не был Arial Bold, это отдельное лицо с другим файлом шрифта. Единственный способ указать шрифт Arial Bold - установить для pszFaceName значение "Arial Bold". К сожалению, простое добавление Bold к концу имени шрифта работает только для некоторых шрифтов, так как некоторые шрифты не имеют отдельного жирного шрифта.

Есть ли какой-либо общий способ указать жирный шрифт, который обеспечит возвращение фактической жирной версии шрифта?

Спасибо

Фил

1 ответ

Это просто не так, как работает, средство сопоставления шрифтов Windows не будет заменять имя лица. "Arial Bold" не является стандартным шрифтом и не имеет никакого отношения к стандартному "Arial" шрифту. Если вы хотите использовать его, вам придется попросить об этом.

При запросе "Arial" с помощью FW_BOLD выбирается файл шрифта c:\windows\fonts\arialbd.ttf. Файл шрифта, специально разработанный для визуализации жирного шрифта. С именем лица "Ариал". Аналогично, ariali.ttf предоставляет курсивную версию, arialbi.ttf предоставляет жирную курсивную версию, arial.ttf является нормальной.

Другие вопросы по тегам