REMFONTRES


Библиотека

V32.EXE

Синтаксис

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) не удаляется, сам файл шрифта также не удаляется; все это следует делать самостоятельно.

Нормальная последовательность удаления шрифта выглядит так.

  1. В соответствующем разделе реестра проверяется наличие параметра по имени шрифта. Если параметр отсутствует, шрифт не был установлен.
  2. При помощи данной процедуры шрифт удаляется из системной таблицы шрифтов (в памяти), всем окнам приложений рассылается сообщение об изменении таблицы шрифтов.
  3. Запись о шрифте удаляется из соответствующего раздела реестра при помощи процедуры Reg.Delete.
  4. Удаляется файл(ы) шрифта.

Исключительные ситуации

Файл шрифта не найден Исключение 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.

См. также