Instalação e exclusão de fonte

Um aplicativo pode usar uma fonte para desenhar texto somente se essa fonte for residente em um dispositivo especificado ou instalada na tabela de fontes do sistema. A tabela de fontes é uma matriz interna que identifica todas as fontes não técnicas disponíveis para um aplicativo. Um aplicativo pode recuperar os nomes de fontes atualmente instaladas em um dispositivo ou armazenadas na tabela de fontes interna chamando as funções EnumFontFamilies ou ChooseFont .

Para instalar temporariamente uma fonte, chame AddFontResource ou AddFontResourceEx. Essas funções carregam uma fonte armazenada em um arquivo de recurso de fonte. No entanto, essa é uma instalação temporária porque após uma reinicialização a fonte não estará presente.

Para instalar uma fonte que permanecerá após a reinicialização do sistema, use um dos seguintes métodos:

  • Vá para o Painel de Controle, clique no ícone Fontes e selecione Instalar Novas Fontes no menu Arquivo. A fonte está disponível para um aplicativo antes mesmo da reinicialização. No entanto, em uma situação de servidor de terminal, a fonte está disponível para a sessão atual, mas não está disponível para outras sessões até depois de uma reinicialização.
  • Copie a fonte para a pasta %windir%\fonts. Em seguida, vá para o Painel de Controle e clique no ícone Fontes ou chame AddFontResource ou AddFontResourceEx. A fonte está disponível para um aplicativo antes mesmo da reinicialização. No entanto, em uma situação de servidor de terminal, a fonte está disponível para a sessão atual, mas não está disponível para outras sessões até depois de uma reinicialização. Se você copiar apenas a fonte para a pasta %windir%\fonts, a fonte estará disponível somente depois que o sistema for reinicializado.

Quando um aplicativo termina de usar uma fonte instalada, ele deve remover essa fonte chamando a função RemoveFontResource .

Uma fonte instalada de um local diferente da pasta %windir%\fonts não pode ser modificada quando carregada em qualquer sessão ativa, incluindo a sessão 0. Qualquer tentativa de alterar, substituir ou excluir será, portanto, bloqueada. Se a modificação em uma fonte for necessária:

  • Fontes temporárias são carregadas somente na sessão atual. Antes de tentar qualquer modificação de fonte, chame RemoveFontResource para forçar a sessão atual a descarregar a fonte.
  • As fontes permanentes permanecem instaladas após a reinicialização e são carregadas por todas as sessões criadas. Chame RemoveFontResource para forçar a sessão atual a descarregar a fonte. Em seguida, na chave do Registro de fonte (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts) localize e remova o valor do Registro associado à fonte. Por fim, reinicie o computador para garantir que a fonte não seja carregada em nenhuma sessão. Após a reinicialização, prossiga com a modificação/exclusão da fonte.

Sempre que um aplicativo chama as funções que adicionam e excluem recursos de fonte, ele também deve chamar a função SendMessage e enviar uma mensagem WM_FONTCHANGE para todas as janelas de nível superior no sistema. Esta mensagem notifica outros aplicativos de que a tabela de fontes interna foi alterada por um aplicativo que adicionou ou removeu uma fonte.