Instalar automáticamente en Ubuntu 14.04 LTS todas las fuentes contenidas en una carpeta

Hace unos días explicábamos lo fácil que puede resultar la instalación de toda una colección de fuentes en Windows 8.1 partiendo de una carpeta donde las teníamos almacenadas y convenientemente ordenadas. En aquél caso, resolvimos la situación recurriendo a un pequeño script de la línea de comandos de Windows (los famosos archivos .bat).

Si eres usuario de Ubuntu, puede que hayas pensado que en tu sistema la solución no puede ser muy distinta… Y estás en lo cierto.

Además, en este ejemplo vamos a ofrecer dos soluciones diferentes:

  • Conseguir que las nuevas fuentes estén disponibles sólo para el usuario que las instala.
  • Conseguir que las nuevas fuentes estén disponibles para todos los usuarios del sistema.

Instalar fuentes sólo para el usuario actual

En la mayoría de las distribuciones GNU/LInux, los archivos y carpetas cuyo nombre comienza por un punto se mantienen ocultas de forma predeterminada.

En cualquier caso, en Ubuntu podemos utilizar la combinación de teclas Ctrl + H para mostrar los elementos ocultos de una carpeta.

Un detalle importante antes de comenzar es comentarte que el sistema almacena las fuentes particulares de cada usuario dentro de su carpeta personal (/home/usuario, siendo usuario el nombre de la cuenta a la que hagamos referencia) en una subcarpeta llamada .fonts.

Para mantener el paralelismo con la solución anterior, crearemos un nuevo script en la carpeta donde se encuentran las fuentes, aunque, claro está, esta vez lo haremos para Bash Shell. Como antes, el script buscará en la carpeta, y en todas sus subcarpetas, los archivos que tengan extensión .otf o .ttf. Cada archivo que vaya encontrando lo irá instalando en el sistema.

Comenzaremos por abrir el explorador de archivos y desplazarnos hasta el lugar donde se encuentren las fuentes que quiero instalar.

1

Recuerda que teníamos una carpeta llamada Fuentes, donde se encuentran todas las fuentes (algunas de ellas organizadas en carpetas)

Para crear el script, sólo tenemos que hacer clic con el botón derecho
del ratón sobre cualquier espacio libre del área de trabajo de la ventana.

2

En el menú de contexto que aparece, elegimos Documento nuevo y a continuación Documento varío.

Esto hará que aparezca un nuevo archivo, con el nombre provisional Documento sin título. Como el nombre aparece en modo edición, sólo tenemos que comenzar a escribir el que nosotros queramos asignarle.

Para que resulte fácil identificarlo como un script de Bash, usaremos la extensión .sh.

3

En mi caso, lo llamaré instalarfuentes.sh, aunque tú puedes usar el nombre que prefieras

Después de esto, ya tenemos nuestro script, aunque de momento no nos sirve de mucho, porque está vacío. Para darle contenido, debemos comenzar por hacer clic sobre él con el botón derecho del ratón.

4

… Y en el menú de contexto que aparece, elegir Abrir con gedit.

gEdit es el editor de textos predeterminado de Ubuntu, pero puedes utilizar cualquier otro que tengas instalado, siempre que se trate de un editor de texto plano.

Como vemos, de momento, el área de trabajo se encuentra en blanco. Llegado a este punto, sólo tienes que escribir (o copiar) el código siguiente:

#!/bin/bash

find . -type d -name '*' -exec mkdir -p ~/.fonts/{} \;
find . -type f -name '*.?tf' -exec cp {} ~/.fonts/{} \;

sudo fc-cache -f -v

Básicamente, lo que hace la primera orden find es localizar todos los subdirectorios que encuentre en la ubicación actual y crear otros con el mismo nombre dentro de la carpeta .fonts en el directorio principal del usuario actual. La opción -p evita que se produzcan errores cuando alguno de los directorios ya exista.

La segunda orden find hace algo parecido, pero en esta ocasión localiza los archivos que existan en la carpeta actual o en cualquiera de sus subcarpetas y cuya extensión termine en tf y los copia en su lugar correspondiente dentro de la carpeta .fonts.

Finalmente, la última orden del script actualiza la caché de fuentes que el sistema mantiene en memoria. De esta forma, podemos comenzar a utilizar los nuevos tipos de letra de forma inmediata.

5

En cuanto termines de escribir (o copiar) el contenido del script, puedes cerrar la ventana.

… Aunque no debes olvidar guardar los cambios.

Llegados a este momento, ya estamos listos para probar el invento. No obstante, por cuestiones de seguridad, Ubuntu no permite que se ejecute ningún script si antes no le hemos otorgado permisos de ejecución. Por lo tanto, de nuevo hacemos clic con el botón derecho del ratón sobre el nombre del script

6

Pero ahora, en el menú de contexto, elegimos la opción Propiedades.

En la ventana de propiedades que aparece a continuación, elegimos la solapa Permisos. Y en su interior, activamos la casilla Permitir ejecutar el archivo como un programa.

7

Una vez hecho esto, ya podemos cerrar la ventana.

Para ejecutar el script, sólo tenemos que abrir una ventana de terminal (por ejemplo usando la combinación de teclas Ctrl + Alt + T). Después, nos desplazamos hasta la carpeta donde se encuentra el script usando, por ejemplo, el siguiente comando:

cd /home/usuario/Documentos/Fuentes

8

Nos desplazamos hasta la carpeta donde se encuentran las nuevas fuentes.

Por último, ejecutamos el script:

./instalarfuentes.sh

9

El sistema nos pide la contraseña porque, en el script, la última línea se ejecuta con privilegios de administrador.

En cuanto termine la ejecución podemos comprobar si todo ha funcionado correctamente abriendo nuestro procesador de textos favorito y seleccionando algunas de las fuentes instaladas.

10

Y comprobamos que funciona como esperábamos

Si en el futuro necesitas eliminar alguna de las fuentes instaladas, sólo tienes que eliminarlas de la carpeta ~/.fonts y volver a ejecutar la orden:

sudo fc-cache -f -v

Instalar fuentes para todos los usuarios del sistema

En realidad, la solución es prácticamente la misma, aunque cambiando el destino de los archivos copiados. En este caso, la carpeta donde los almacenaremos será /usr/share/fonts, que es donde Ubuntu guarda todos sus tipos de letra predeterminados.

Como cabe esperar, ahora necesitaremos privilegios de administrador tanto para crear las carpetas de destino como para copiar los archivos. Por lo tanto, la nueva versión del script quedará como sigue:

#!/bin/bash

find . -type d -name '*' -exec sudo mkdir -p /usr/share/fonts/{} \;
find . -type f -name '*.?tf' -exec sudo cp {} /usr/share/fonts/{} \;

sudo fc-cache -f -v

1

Cuando hayamos hecho las modificaciones oportunas, guardamos los cambios y cerramos la ventana.

Después, volvemos a abrir una nueva ventana de terminal (recuerda, Ctrl + Alt + T) y a desplazarnos hasta la carpeta donde se encuentra el script:

cd /home/usuario/Documentos/Fuentes

2

En la Terminal, nos desplazamos hasta la carpeta.

Por último, ejecutamos el script:

./instalarfuentes.sh

3

En esta ocasión, necesitaremos privilegios para ejecutar todas las instrucciones, aunque nosotros no notaremos la diferencia.

De nuevo, en cuanto termine la ejecución del script, podemos abrir nuestro procesador de textos favorito para comprobar que las fuentes están instaladas.

4

Y, de nuevo, comprobamos que funciona como esperábamos