REMFONTRES(FontFileName: STRING[];
[ OnTerminalClient:
SCAL[2] ] );
Процедура удаляет шрифтовой ресурс, соответствующий файлу FontFileName, из системной таблицы шрифтов (в памяти) и рассылает сообщение об изменении системной таблицы шрифтов всем окнам верхнего уровня в системе. В случае неудачи процедура выбрасывает исключение. Необязательный флаговый параметр OnTerminalClient имеет значение только для терминального клиента ASB. По умолчанию флаг поднят, т.е. процедура будет выполнена на стороне терминального клиента.
Поддерживаются перечисленные в таблице типы файлов.
Расширение файла |
Описание |
---|---|
.fon | Ресурсный файл шрифта |
.fnt | Матричный шрифт |
.ttf | Шрифт TrueType |
.ttc | Коллекция TrueType-шрифтов (в восточноазиатских версиях Windows ) |
.fot | Ресурсный файл для TrueType-шрифта (использовался в 16-битных версиях Windows) |
.oft | Шрифт OpenType |
.mmm | Ресурсный файл шрифта Type 1. Используется с .pfm и .pfb-файлами |
.pfb | Файл данных шрифта Type 1. Используется с .pfm-файлом |
.pfm | Файл метрик шрифта Type 1. Используется с .pfb-файлом |
Если шрифт был вставлен в таблицу процедурой ADDFONTRES более одного раза, одним вызовом данной процедуры удаляется только один элемент таблицы.
Процедура всего лишь удаляет шрифт из таблицы шрифтов системы в памяти.
Регистрация шрифта в соответствующем разделе реестра ("HKLM\Software\Microsoft\Windows
NT\CurrentVersion\Fonts"
для Windows NT, "HKLM\Software\Microsoft\Windows\CurrentVersion\Fonts"
для Windows 9X) не удаляется, сам файл шрифта также не удаляется; все это
следует делать самостоятельно.
Нормальная последовательность удаления шрифта выглядит так.
Файл шрифта не найден | Исключение 870 |
Не удалось удалить шрифт из системной таблицы шрифтов | Исключение 872 |
IMPORT FIO, Reg, Shell;
CONST
FontName = "IDAutomation.com Code39 (TrueType)";
FontsRegKey_98 = "HKLM\Software\Microsoft\Windows\CurrentVersion\Fonts";
FontsRegKey_NT = "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Fonts";
VAR
Platform: SCAL[4];
FontsRegKey: STRING[];
FontRegParam: STRING[];
FontDstPath: STRING[];
BEGIN
OSVERSION(Platform);
IF Platform = 3 THEN
FontsRegKey := FontsRegKey_NT;
ELSE
FontsRegKey := FontsRegKey_98;
END;
FontRegParam := Reg.BuildPath(FontsRegKey, FontName);
IF Reg.Read(FontRegParam, FontDstPath) THEN
FontDstPath := FIO.MakePath(FontDstPath, , Shell.SpecialFolders("Fonts"));
REMFONTRES(FontDstPath);
Reg.Delete(FontRegParam);
FIO.Erase(FontDstPath);
ELSE
STDMSG("Font is not installed", INFORM);
END;
END.