Flag of Ukraine
SymfonyCasts stands united with the people of Ukraine

Añadir fuentes

Keep on Learning!

If you liked what you've learned so far, dive in!
Subscribe to get access to this tutorial plus
video, code and script downloads.

Start your All-Access Pass
Buy just this tutorial for $12.00

With a Subscription, click any sentence in the script to jump to that part of the video!

Login Subscribe

Otra necesidad común de CSS es una fuente personalizada. Mi fuente favorita de fuentes es https://fontsource.org, donde puedes buscar entre un enorme número de fuentes que tienen diversas licencias de código abierto.

Por ejemplo, una fuente popular es "Inter". Aquí, puedes descargar el archivo, y da unas instrucciones de instalación, que son interesantes: utiliza la fuente como un paquete npm.

Nosotros no usamos npm, pero podemos usar paquetes npm: y sabemos cómo.

Dirígete a jsDelivr para encontrarlo. Observa que el paquete se llama@fontsource-variable/inter. Voy a buscar @fontsource/inter. Y... al igual que con Bootstrap, ¡ahí está el archivo CSS! Para los frikis de las fuentes, si miraras dentro de este archivo, verías que se trata del peso 400, y es el archivo que utilizarías normalmente si lo instalaras a través de npm y lo importaras.

Copia esa URL y pégala en el navegador para ver qué aspecto tiene.

¿Fuentes variables?

Fíjate en que, en FontSource, recomiendan utilizar un paquete que empiece por @fontsource-variable. Las fuentes variables son geniales: en lugar de necesitar un archivo de fuente diferente para cada peso de fuente, como 400 frente a 800, una sola fuente variable puede contener todos los pesos, manteniendo un tamaño de archivo razonablemente pequeño. FontSource empezó a ofrecer fuentes variables hace poco.

Cambia la URL para utilizar @fontsource-variable. Esto es lo que realmente queremos. Cópialo, vuelve a base.html.twig, añade <link rel="stylesheet">, y pégalo.

... lines 1 - 2
<head>
... lines 4 - 11
{% block stylesheets %}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/inter@5.0.3/index.min.css">
... lines 14 - 15
{% endblock %}
... lines 17 - 21
</head>
... lines 23 - 75

Gracias a esto, podemos ir a app.css, dentro de la etiqueta body, y decirfont-family: 'Inter Variable', añadiendo sans-serif como copia de seguridad.

... lines 1 - 12
body {
... line 14
font-family: 'Inter Variable', sans-serif;
}
... lines 17 - 25

¡Vamos a comprobarlo! Fíjate bien en este texto. ¡Bum! Se ha actualizado gracias a esa nueva fuente.

Si te preguntas por qué no me limité a buscar el paquete @fontsource-variableen jsDelivr originalmente, es una pregunta justa: eso es lo que haría normalmente. jsDelivr es un espejo de todos los paquetes NPM. Sin embargo, debido a un error en la API de npmjs.com, ahora mismo, estos nuevos paquetes "variables" no se pueden encontrar en la búsqueda. Al parecer, el error se ha solucionado, así que esperemos que el problema desaparezca pronto.

La cuestión es que jsDelivr sí tiene el paquete que necesitamos, sólo que no podemos encontrarlo a través de la búsqueda. Es un poco molesto, pero debería ser temporal.

A continuación: Hagamos nuestro CSS un poco más elegante introduciendo Tailwind. Esto va a ser especialmente interesante porque Tailwind requiere un paso de compilación.

Leave a comment!

2
Login or Register to join the conversation
Rufnex Avatar

i wonder how to proceed to store the fonts locally and not retrieve them from a CND.

Reply

Hey @Rufnex,

You can just download any font you need to you public/ or assets/ directory and create your own css file to use them

Cheers!

1 Reply
Cat in space

"Houston: no signs of life"
Start the conversation!

What PHP libraries does this tutorial use?

// composer.json
{
    "require": {
        "php": ">=8.1",
        "ext-ctype": "*",
        "ext-iconv": "*",
        "babdev/pagerfanta-bundle": "^4.0", // v4.2.0
        "doctrine/doctrine-bundle": "^2.7", // 2.10.0
        "doctrine/doctrine-migrations-bundle": "^3.2", // 3.2.4
        "doctrine/orm": "^2.12", // 2.15.2
        "knplabs/knp-time-bundle": "^1.18", // v1.20.0
        "pagerfanta/doctrine-orm-adapter": "^4.0", // v4.1.0
        "pagerfanta/twig": "^4.0", // v4.1.0
        "stof/doctrine-extensions-bundle": "^1.7", // v1.7.1
        "symfony/asset": "6.3.*", // v6.3.0
        "symfony/asset-mapper": "6.3.*", // v6.3.0
        "symfony/console": "6.3.*", // v6.3.0
        "symfony/dotenv": "6.3.*", // v6.3.0
        "symfony/flex": "^2", // v2.3.1
        "symfony/framework-bundle": "6.3.*", // v6.3.0
        "symfony/http-client": "6.3.*", // v6.3.0
        "symfony/monolog-bundle": "^3.0", // v3.8.0
        "symfony/proxy-manager-bridge": "6.3.*", // v6.3.0
        "symfony/runtime": "6.3.*", // v6.3.0
        "symfony/stimulus-bundle": "^2.9", // v2.9.1
        "symfony/twig-bundle": "6.3.*", // v6.3.0
        "symfony/ux-turbo": "^2.9", // v2.9.1
        "symfony/web-link": "6.3.*", // v6.3.0
        "symfony/yaml": "6.3.*", // v6.3.0
        "twig/extra-bundle": "^2.12|^3.0", // v3.6.1
        "twig/twig": "^2.12|^3.0" // v3.6.1
    },
    "require-dev": {
        "doctrine/doctrine-fixtures-bundle": "^3.4", // 3.4.4
        "symfony/debug-bundle": "6.3.*", // v6.3.0
        "symfony/maker-bundle": "^1.41", // v1.49.0
        "symfony/stopwatch": "6.3.*", // v6.3.0
        "symfony/web-profiler-bundle": "6.3.*", // v6.3.0
        "zenstruck/foundry": "^1.21" // v1.33.0
    }
}
userVoice