Google Fonts Local — Fuentes Autoalojadas RGPD (dffontmanager)
Instalación, importación local de Google Fonts, subsetting, precarga, reglas de sustitución sin tocar el tema y verificación RGPD.
DF Font Manager aloja tus Google Fonts directamente en tu servidor PrestaShop: tus visitantes no vuelven a contactar con los servidores de Google (conformidad RGPD), y cambias la tipografía de tu tienda mediante simples reglas CSS, sin modificar un solo archivo del tema. El módulo gestiona la importación desde el catálogo de Google Fonts, el subsetting automático por alfabeto, la precarga del archivo crítico, la estrategia font-display y la subida de fuentes propias.
Esta documentación cubre la versión 1.0.0 del módulo, compatible con PrestaShop 8.0.0 a 9.x. Sin overrides de clases, sin dependencia de Composer, JS vanilla sin jQuery.
Instalación
- En tu back office de PrestaShop, abre Módulos > Gestor de módulos.
- Haz clic en Subir un módulo y suelta el archivo
dffontmanager.zip. - Aparece una pestaña Gestor de fuentes bajo el menú Diseño: todo ocurre allí (el botón Configurar del módulo también redirige a ella).
El módulo se registra en tres hooks (displayHeader, actionFrontControllerSetMedia, actionOutputHTMLBefore) y crea dos tablas: las fuentes instaladas y las reglas de sustitución. Los archivos de fuentes se almacenan en modules/dffontmanager/views/fonts/ y la hoja de estilos generada en modules/dffontmanager/views/css/generated/ — comprueba que estas carpetas tienen permisos de escritura.
Ajustes generales
- Activar las fuentes autoalojadas — interruptor principal: carga la hoja de estilos generada y las etiquetas de precarga en el front office.
- Eliminar las llamadas externas a Google Fonts (RGPD) — limpia el HTML renderizado de la tienda: todas las etiquetas link que apuntan a
fonts.googleapis.comofonts.gstatic.com(hojas de estilo, preconnect, precargas) así como los@importinline correspondientes se eliminan antes de enviar la página. Esta opción es la que garantiza que ninguna petición llegue a Google, aunque tu tema u otro módulo la inyecte. - Estrategia font-display — aplicada a todas las declaraciones
@font-facegeneradas.swap(por defecto) mantiene el texto visible durante la carga;block,fallback,optionalyautoestán disponibles para necesidades específicas.
Recomendación: deja swap. Es el mejor equilibrio para los Core Web Vitals — sin texto invisible (FOIT), sin penalización de LCP.
Importar una fuente de Google Fonts
- En el panel Importar una fuente de Google, escribe al menos dos caracteres: el autocompletado recorre el catálogo completo de Google Fonts, cacheado 7 días en tu servidor (botón de actualización junto al campo).
- Selecciona una familia: se muestran las variantes disponibles (grosores 100 a 900, normal e itálica) y los alfabetos. Por defecto vienen premarcados los grosores 400 y 700 y los subsets latin + latin-ext.
- Haz clic en Importar localmente.
El módulo consulta entonces la API CSS de Google, descarga los archivos woff2 oficiales correspondientes a tu selección (un archivo por alfabeto y variante), verifica su firma binaria, los guarda en views/fonts/nombre-de-la-familia/ y regenera la hoja de estilos. La página se recarga con la familia visible en la tabla de fuentes instaladas, con su peso total en disco.
La descarga se realiza una sola vez, de servidor a servidor, en el momento de la importación. Tus visitantes nunca participan en esa petición: en el front, todo se sirve desde tu dominio.
El subsetting automático
Google divide cada fuente en archivos por alfabeto (latin, latin-ext, cirílico, griego, vietnamita, etc.). El módulo solo descarga los alfabetos marcados y conserva el unicode-range original de cada archivo en la declaración @font-face. El navegador solo solicita, por tanto, los rangos de caracteres realmente mostrados en la página: una tienda española típica sirve de 20 a 90 KB de fuentes en lugar de varios cientos.
Marca solo los alfabetos de tu audiencia real. Siempre podrás reimportar la familia más adelante con subsets adicionales: la importación reemplaza limpiamente los archivos existentes conservando tus ajustes (precarga, activación) y tus reglas.
Reimportar o modificar una familia
Para añadir un grosor o un alfabeto a una familia ya instalada, simplemente repite la importación con la nueva selección: los archivos antiguos de la familia se reemplazan y las reglas de sustitución que la usan permanecen intactas.
Subir una fuente propia
El panel Subida de fuente personalizada acepta los formatos woff2 (recomendado), woff, ttf y otf. Indica el nombre de la familia, el grosor y el estilo, y envía el archivo — un archivo por combinación grosor/estilo, fusionados automáticamente bajo la misma familia. Cada archivo se valida por su firma binaria (no por su extensión), y se integra en la hoja generada y en las reglas exactamente como una fuente de Google.
Comprueba que tu licencia permite el uso web autoalojado, especialmente para fuentes comerciales compradas a fundiciones tipográficas.
Gestionar las fuentes instaladas
La tabla de fuentes instaladas muestra para cada familia: la procedencia (google o custom), las variantes, los subsets, el número de archivos y su peso en disco, más dos interruptores:
- Activa — incluye o excluye la familia de la hoja de estilos generada (los archivos permanecen en disco).
- Precarga — ver la sección dedicada más abajo.
El botón de eliminación quita la familia, sus archivos en disco y todas las reglas que la usan, y reconstruye la hoja de estilos.
Reglas de sustitución
Aquí es donde aplicas tus fuentes sin tocar el tema. Cada regla asocia un selector CSS a una fuente instalada, con cuatro opciones:
- Grosor — fuerza un
font-weight(déjalo vacío para heredar del tema); - Estilo — normal o itálica (vacío para heredar);
- Pila de reserva — familias genéricas mostradas mientras la fuente no está cargada:
sans-serif,serif,monospaceosystem-ui, sans-serif; - !important — marcado por defecto, garantiza que la regla prevalezca sobre los estilos del tema sea cual sea su especificidad.
Ejemplos de selectores habituales:
body— toda la tienda;h1, h2, h3, h4, h5, h6— todos los títulos;.btn, button— los botones;.product-title, .h3.product-title— los títulos de producto en los listados (adáptalo a tu tema).
Configuración típica en dos reglas: body hacia tu fuente en 400 con pila sans-serif, y h1, h2, h3, h4 hacia la misma familia en 700. Inspecciona tu tema con las herramientas de desarrollo del navegador para identificar selectores más precisos.
Cada adición o eliminación de regla reconstruye inmediatamente la hoja de estilos. La hoja se carga después del CSS del tema: incluso sin !important, tus reglas ganan la cascada a igual especificidad.
Precarga — buenas prácticas
El interruptor Precarga de una familia emite en la cabecera de la página una etiqueta link rel=preload as=font crossorigin para su archivo crítico, elegido automáticamente: woff2, estilo normal, alfabeto latin, grosor más cercano a 400. El navegador descarga así la fuente en paralelo al CSS, antes incluso de descubrir su uso — el texto definitivo se muestra antes.
Precarga solo una o dos familias realmente usadas por encima del pliegue. Cada precarga consume ancho de banda prioritario: abusar de ella degrada el LCP en lugar de mejorarlo.
Funcionamiento técnico
- La hoja generada
fonts-v{marca-de-tiempo}.csscontiene todas las declaraciones@font-face(confont-displayyunicode-range) seguidas de las reglas de sustitución. Cada reconstrucción produce un nuevo nombre de archivo (cache-busting automático) y purga las versiones antiguas. - Se registra mediante
actionFrontControllerSetMediacon una prioridad que la sitúa después del CSS del tema. - Las etiquetas de precarga las emite
displayHeader; la lista de archivos críticos se cachea en configuración — ninguna consulta SQL adicional por página del front. - La eliminación de llamadas externas se ejecuta en
actionOutputHTMLBefore, sobre el HTML final, después de la caché de Smarty. - El botón Reconstruir el CSS fuerza una regeneración completa — útil tras una intervención manual en los archivos o una restauración de copia de seguridad.
Verificar la conformidad RGPD
- Abre tu tienda en una ventana de navegación privada.
- Abre las herramientas de desarrollo (F12), pestaña Red, y filtra por
fonts.g. - Recarga la página: la lista debe permanecer vacía. Si aparece una petición a
fonts.googleapis.comofonts.gstatic.com, activa la opción de eliminación de llamadas externas y vacía la caché de PrestaShop.
Prueba la página de inicio, una ficha de producto y el checkout: algunos módulos de pago o widgets de terceros cargan sus propias fuentes en iframes, fuera del alcance de la limpieza HTML (entonces se aplican sus propios banners de consentimiento).
Multitienda
Las fuentes importadas y las reglas de sustitución se comparten entre todas las tiendas de una misma instalación. Los interruptores de activación y la opción de eliminación de llamadas externas siguen el contexto de configuración estándar de PrestaShop.
Solución de problemas
- La fuente no se muestra en el front — comprueba en orden: el interruptor principal está activado, la familia está activa, existe una regla de sustitución para el selector correcto, y la caché de PrestaShop está vacía (Parámetros avanzados > Rendimiento). Después inspecciona el elemento en el navegador: si la regla aparece tachada, un estilo del tema más específico la sobrescribe — marca
!importanten la regla. - La importación falla con un error de red — tu servidor debe poder alcanzar
fonts.googleapis.comyfonts.gstatic.comen salida (cURL o allow_url_fopen). En un servidor tras un cortafuegos estricto, pide a tu proveedor de alojamiento la apertura de esos dos dominios. - El autocompletado no sugiere nada — el catálogo no pudo descargarse (red). Haz clic en el botón de actualización del catálogo, o escribe el nombre exacto de la familia y pulsa Intro: la importación directa funciona sin el catálogo.
- Error de escritura al importar o reconstruir — concede permisos de escritura al servidor web en
modules/dffontmanager/views/fonts/ymodules/dffontmanager/views/css/generated/. - Persisten llamadas a Google pese a la opción de eliminación — identifica el origen en la pestaña Red (columna iniciador). Si procede de un iframe de terceros (pago, reseñas, mapas), la limpieza HTML no puede alcanzarlo: gobierna entonces el consentimiento de ese servicio de terceros.
Actualización del módulo
Los archivos de fuentes y la hoja generada viven en la carpeta del módulo. Una actualización realizada sobrescribiendo la carpeta modules/dffontmanager/ elimina las fuentes importadas. Tras una actualización así, abre el gestor y reimporta tus familias (dos clics por familia: tus ajustes y reglas, almacenados en base de datos, se conservan). Una actualización mediante el Gestor de módulos estándar provoca el mismo comportamiento: planifica la reimportación justo después.
Desinstalación
La desinstalación elimina las dos tablas, las claves de configuración, los archivos de fuentes descargados y la hoja de estilos generada. Tu tienda recupera al instante las fuentes originales de su tema — sin residuos.