El blog personal de Morgul, donde escribe sobre sus aficiones, descubrimientos y actividades, compartiendo conocimientos.

30 de noviembre de 2008

Cómo usar fuentes TrueType en PDFLaTeX

El otro día estuve investigando el modo de poder utilizar fuentes tipográficas TrueType (con extensión de fichero .ttf) para los documentos PDF que genero desde LaTeX, mediante sus herramientas PDFLaTeX o PDFeLaTeX. Por cierto, mi distribución LaTeX es TeTeX, que está siendo sustituida hoy en día por TeX Live, puesto que su autor ha dejado de mantenerla.

La información que aparece al respecto en los primeros resultados de búsqueda de los buscadores web más conocidos está en gran parte obsoleta, puesto que fue redactada más de cinco años atrás y las herramientas que utilizaban en aquella época ya no funcionan del mismo modo (por ejemplo, aceptan distintos parámetros desde la línea de comandos).

Después de un buen rato probando distintos métodos antiguos en vano, al final encontré una página web que estaba más al día con respecto a las herramientas y versiones de LaTeX que existen actualmente (en inglés): http://tclab.kaist.ac.kr/ipe/pdftex.html

Gracias al tutorial 'Using a Truetype font in Pdflatex' sito en esa misma página, conseguí por fin utilizar fuentes TrueType desde LaTeX. Sin embardo, tuve que deducir a base de prueba y error el procedimiento preciso para conseguir esto, puesto que ese tutorial no muestra el suficiente detalle para poder reproducir la proeza. Por tanto, para que no se me olvide y por si a alguien más le resulta útil, redactaré aquí de un modo sencillo y paso por paso cómo hice para conseguir usar fuentes TTF con LaTeX.

El sistema con el que he trabajado es una Gentoo Linux, con la distribución (de LaTeX) TeTeX, versión 3.0 (versión del ebuild de Gentoo: 3.0_p1-r6). Sin lugar a duda, la metodología que voy a describir servirá para otras versiones de TeTeX, posiblemente también sirva para otras distribuciones de LaTeX (si os funciona en otra, hacédmelo saber) y, por supuesto, será independiente de la distribución de Linux.
  1. Crea un carpeta de trabajo temporal, copia en ella el fichero con el tipo de letra TrueType que quieras utilizar con LaTeX. Desde ahora supondremos que este fichero se llama fuente.ttf
  2. Comprueba si tu sistema dispone de la herramienta ttf2tfm. Por ejemplo, intenta ejecutarla desde la línea de comandos, con la orden ttf2tfm. Si ya dispones de ella, descarga el fichero T1-WGL4.enc desde esta URL hasta la carpeta de trabajo temporal y salta al paso 12.
  3. Comprueba que tienes la herramienta de control de versiones CVS instalada, así como un entorno de desarrollo GCC funcional. Esto es un requisito, por lo que será necesario que instales lo que le falte a tu sistema.
  4. Desde la consola, cambia a un directorio de tu elección donde tengas permisos de escritura.
  5. Descarga el código fuente de la versión 1 de la librería FreeType desde su repositorio CVS, con el siguiente comando: cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/freetype co freetype
  6. Accede al nuevo directorio freetype con: cd freetype
  7. Descarga el código fuente de las herramientas adicionales para la versión 1 de la librería FreeType desde su repositorio CVS, con el siguiente comando: cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/freetype co freetype1-contrib
  8. Dale permisos de ejecución a los dos ficheros configure que utilizaremos, con la orden: chmod +x configure freetype1-contrib/ttf2pk/configure
  9. Compila la librería FreeType 1, con: ./configure y a continuación: make
  10. Compila la herramienta ttf2tfm, cambiando primero al directorio donde se encuentra: cd freetype1-contrib/ttf2pk y ejecutando: ./configure y a continuación: make. Si todo ha ido bien, el ejecutable de la herramienta ttf2tfm estará en esta carpeta.
  11. Copia a la carpeta de trabajo temporal el fichero T1-WGL4.enc, que estará en el directorio .../freetype/freetype1-contrib/ttf2pk/data
  12. Accede a la carpeta de trabajo temporal y convierte el fichero de tipo de letra TrueType al formato tfm, ejecutando la orden: ttf2tfm fuente.ttf -p T1-WGL4.enc (debes añadir la ruta al ejecutable ttf2tfm en caso necesario).
  13. Crea un fichero de texto con nombre t1fuente.fd (cambia fuente según corresponda), con el siguiente contenido:
    \DeclareFontFamily{T1}{fuente}{}
    \DeclareFontShape{T1}{fuente}{m}{n}{
    <-> lhandw
    }{}
    \DeclareFontShape{T1}{fuente}{bx}{n}{<->ssub * fuente/m/n}{}
    \DeclareFontShape{T1}{fuente}{m}{it}{<->ssub * ptm/m/it}{}
    \DeclareFontShape{T1}{fuente}{m}{sl}{<->ssub * ptm/m/sl}{}
    \DeclareFontShape{T1}{fuente}{m}{sc}{<->ssub * ptm/m/sc}{}
    \DeclareFontShape{T1}{fuente}{bx}{it}{<->ssub * ptm/b/it}{}
    \DeclareFontShape{T1}{fuente}{bx}{sl}{<->ssub * ptm/b/sl}{}
    \DeclareFontShape{T1}{fuente}{bx}{sc}{<->ssub * ptm/b/sc}{}
    \pdfmapline{+fuente\space
  14. Copia desde la carpeta de trabajo los ficheros fuente.ttf, fuente.tfm, t1fuente.fd y T1-WGL4.enc a la carpeta donde se encuentre el código fuente de tu documento LaTeX. El resto ficheros en la carpeta de trabajo temporal ya pueden eliminarse, así como también el código fuente de FreeType, a menos que quieras aplicar el proceso a más fuentes TrueType.
Con esto, ya podrás utilizar esta fuente TrueType como cualquier otra fuente incluida en tu distribución LaTeX, teniendo en cuenta que su codificación es T1. Por ejemplo, puedes usar la fuente temporalmente en una sola frase usando el siguiente código LaTeX:
{{\fontencoding{T1}\fontfamily{fuente}\selectfont Esto es una prueba tipográfica.}}

¿Te ha gustado esta entrada? Vótala en Bitacoras.com: Votar

3 comentarios:

Miguel Pedreros dijo...

Gracias por compartir esa información. Hace bastante tiempo que lo estaba buscando, así que haré las pruebas.

Aún así me parece interesante lo que te escribieron. Usar XeLatex? no lo conocía...

cuídate

Morgul dijo...

Yo tampoco conocía XeLatex. Está muy bien eso de poder utilizar cualquier tipo de fuentes sin tener que configurar las métricas ni nada de eso, algún día lo probaré.

De momento, ya he sustituido mi distribución (de LaTeX) TeTeX por TeX Live. Todo me sigue funcionando igual de bien que antes.

JuanraMC dijo...

Gracias por el post.
a mí no me ha funcionado.
en el trabajo usamos windows tengo instalado un latex portable (no tenemos permisos de administrador, claro). Para no liarme, usé el nombre "fuente" para nombrar a los ficheros de la fuente en cuestión.

He cogido el ttf, convertido a tfm online, creado el .fd y llevado el .enc todo al directorio donde están los ficheros fuentes, pero al copmilar me da error.
al compilar no encuentra el fichero .tfm, y no sé por qué.
! Font T1/fuente/m/n/12=lhandw at 12.0pt not loadable: Metric (TFM) file not fo
und.