Почему работает создание шрифта на основе несуществующего FontFamily? - PullRequest
2 голосов
/ 30 января 2012

Я рисую некоторый текст с помощью Gdi + и пытаюсь убедиться, что созданный мной шрифт действительно существует.Я заметил, что он работает независимо от того, какой шрифт я указал.У меня есть следующий код:

Font font(TEXT("SomeGibberishFOEIHSFUE"), 12, 0, UnitPoint);

if (!font.IsAvailable())
    exit(0);

// draw text

В моей системе не установлен шрифт с именем SomeGibberishFOEIHSFUE, но IsAvailable возвращает TRUE, и программа запускается и рисует текст шрифтом, который выглядит какArial вместо выхода.Почему это так?

Если я использую IsAvailable неправильно, какую функцию я должен использовать, чтобы определить, было ли создание шрифта успешным или нет?Я также попытался GetLastStatus, который возвращает Ok.

1 Ответ

2 голосов
/ 30 января 2012

Это работающий в Windows маппер шрифтов, он всегда найдет замещающий шрифт, если не может предоставить запрашиваемый.Возвращаясь к шрифту GUI по умолчанию, если это необходимо.Вместо этого вы можете использовать класс FontFamily.Его версия .NET (похоже, что вы ее используете) вызовет исключение ArgumentException, когда вы используете его конструктор и передаете несуществующий шрифт.Его собственная версия GDI + имеет метод IsAvailable () .Да, немного странное поведение, но в GDI + это не является чем-то необычным.

...