Instalación y eliminación de fuentes

Una aplicación puede usar una fuente para dibujar texto solo si esa fuente reside en un dispositivo especificado o está instalada en la tabla de fuentes del sistema. La tabla de fuentes es una matriz interna que identifica todas las fuentes no device que están disponibles para una aplicación. Una aplicación puede recuperar los nombres de las fuentes instaladas actualmente en un dispositivo o almacenados en la tabla de fuentes internas llamando a las funciones EnumFontFamilies o ChooseFont .

Para instalar temporalmente una fuente, llame a AddFontResource o AddFontResourceEx. Estas funciones cargan una fuente almacenada en un archivo de recursos de fuente. Sin embargo, se trata de una instalación temporal porque después de reiniciar la fuente no estará presente.

Para instalar una fuente que permanecerá después de reiniciar el sistema, use uno de los métodos siguientes:

  • Vaya al Panel de control, haga clic en el icono Fuentes y seleccione Instalar nuevas fuentes en el menú Archivo. La fuente está disponible para una aplicación incluso antes del reinicio. Sin embargo, en una situación de terminal server, la fuente está disponible para la sesión actual, pero no está disponible para otras sesiones hasta después de un reinicio.
  • Copie la fuente en la carpeta %windir%\fonts. A continuación, vaya a la Panel de control y haga clic en el icono Fuentes, o bien llame a AddFontResource o AddFontResourceEx. La fuente está disponible para una aplicación incluso antes del reinicio. Sin embargo, en una situación de terminal server, la fuente está disponible para la sesión actual, pero no está disponible para otras sesiones hasta después de un reinicio. Si solo copia la fuente en la carpeta %windir%\fonts, la fuente solo estará disponible después de reiniciar el sistema.

Cuando una aplicación termine de usar una fuente instalada, debe quitarla llamando a la función RemoveFontResource .

Una fuente instalada desde una ubicación distinta de la carpeta %windir%\fonts no se puede modificar cuando se carga en cualquier sesión activa, incluida la sesión 0. Cualquier intento de cambiar, reemplazar o eliminar se bloqueará, por lo tanto, . Si es necesario realizar modificaciones en una fuente:

  • Las fuentes temporales solo se cargan en la sesión actual. Antes de intentar realizar modificaciones de fuente, llame a RemoveFontResource para forzar la sesión actual a descargar la fuente.
  • Las fuentes permanentes permanecen instaladas después del reinicio y se cargan en todas las sesiones creadas. Llame a RemoveFontResource para forzar que la sesión actual descargue la fuente. A continuación, en la clave del Registro de fuentes (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts) busque y quite el valor del Registro asociado a la fuente. Por último, reinicie la máquina para asegurarse de que la fuente no se carga en ninguna sesión. Después del reinicio, continúe con la modificación o eliminación de fuentes.

Cada vez que una aplicación llama a las funciones que agregan y eliminan recursos de fuente, también debe llamar a la función SendMessage y enviar un mensaje de WM_FONTCHANGE a todas las ventanas de nivel superior del sistema. Este mensaje notifica a otras aplicaciones que una aplicación que ha agregado o quitado una fuente ha modificado la tabla de fuentes interna.