Добавить шрифт, список шрифтов

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

Добавляем


При инициализации программы в Delphi, автоматически создётся объект Screen типа TScreen
Screen

По мимо разрешающей способности экрана и прочей интересной информации, в этом объекте хранится информация и о шрифтах доступных в данной системе
Screen.Fonts

Что бы проверить наличие нужного шрифта, надо всего лишь перебрать имена всех установленных шрифтов и найти там нужный, если такого не найдётся, то добавляем свой:
procedure TForm1.FindFont;

var
i: word;
begin
try
for i := 0 to Screen.Fonts.Count - 1 do
if (Screen.Fonts.Strings[i] = 'Segoe UI') then
exit;
AddFontResource('segoeui.ttf');
ShowMessage('Шрифт добавлен');
except
ShowMessage('Ошибка');
end;
end;

В данной процедуре мы ищем шрифт Segoe UI, как только он будет найден происходит выход из процедуры. Если же совподений не было найден, мы добавляем новый шрифт в систему с помощью функции AddFontResource
AddFontResource(FileName: string);

В качестве параметра которой, указываем путь до файла шрифта, в данном примере файл шрифтов segoeui.ttf находится по соседству с приложением.
Эта функция возвращает 0, если шрифт не был добавлен
if (AddFontResource('segoeui.ttf') = 0) then

ShowMessage('Шрифт не добавлен');

Вот и всё, а получить список установленных шрифтов можно аналогичным способом.