Las fuentes estándar de LaTeX son superlativas, desde su diseño y confección, para cumplir su propósito. Las fuentes adicionales distribuidas con TeX Live son igual de espectaculares. La mente WYSIWYG no está preparada para comprenderlo.
Puede faltar vocabulario, gramática, redacción, o substancia, pero nunca falta un pajúo que monta una guerra santa porque «necesita» una fuente ajena a LaTeX para cumplir con una éstetica. Usualmente se presentan con una fuente TrueType. Cuando son particularmente competentes, se presentan con una fuente OpenType.
Siempre es posible aptovechar ualquier fuente OpenType en un sistema Debian GNU/Linux reciente, para que funcione en un usuario regular. A efectos de esta guía, usaré la fuente Quicksand.
Para mi ambiente de escritorio personal
Personalmente uso GNOME y ocasionalmente XFCE. Para cualquiera
de los dos, lo único que hay que hacer es poner todos los
archivos .otf
en el directorio ~/.fonts
.
Descargué Quicksand.zip
conteniendo todos los .otf
relevantes, lo exploté dentro de mi directorio
~/.fonts
.
$ cd .fonts
$ unzip ~/Downloads/quicksand.zip '*.otf'
Archive: /home/emhn/Downloads/quicksand.zip
inflating: Quicksand-Light.otf
inflating: Quicksand-LightItalic.otf
inflating: Quicksand-Regular.otf
inflating: Quicksand-Italic.otf
inflating: Quicksand-Bold.otf
inflating: Quicksand-BoldItalic.otf
inflating: Quicksand_Dash.otf
quedando listos para usar en el ambiente de escritorio
$ fc-list Quicksand
/home/emhn/.fonts/Quicksand-Bold.otf: Quicksand:style=Bold
/home/emhn/.fonts/Quicksand-LightItalic.otf: Quicksand:style=Light Italic
/home/emhn/.fonts/Quicksand_Dash.otf: Quicksand,Quicksand Dash:style=Dash,Regular
/home/emhn/.fonts/Quicksand-BoldItalic.otf: Quicksand:style=Bold Italic
/usr/share/fonts/truetype/quicksand/Quicksand-Bold.ttf: Quicksand:style=Bold
/home/emhn/.fonts/Quicksand-Regular.otf: Quicksand:style=Regular
/home/emhn/.fonts/Quicksand-Light.otf: Quicksand:style=Light
/usr/share/fonts/truetype/quicksand/Quicksand-Regular.ttf: Quicksand:style=Regular
/home/emhn/.fonts/Quicksand-Italic.otf: Quicksand:style=Italic
Se pueden usar en LibreOffice, GIMP, etc. hasta que no sea necesario, en cuyo caso basta
$ rm ~/.fonts/Quicksand-*
para desinstalarlos de mi espacio de usuario.
En MacOSX y Windows debe ser mucho más fácil, dicen.
Para mi ambiente TeX Live
En un sistema Debian GNU/Linux moderno, instalar TeX Live con para soportar inglés y español, se reduce a
# apt install texlive texlive-latex-extra texlive-lang-spanish texlive-lang-english
En MacOSX y Windows debe ser mucho más fácil, dicen.
TeX Live logra los resultados tipográficos que logra, gracias
a que sus fuentes están representadas con más y mejor información
que la que un simple .ttf
u .otf
contienen. Entonces, es
necesario calcular toda la información adicional, y hacerla
accesible a TeX Live.
Transformando el OTF a lo que TeX Live necesita
Siguiendo la tradición Unix, TeX Live permite separar los recursos que vienen con el sistema (los paquetes que instalamos más arriba), los recursos que el administrador agregó para todos los usuarios, y los recursos que un usuario particular quiere tener en su espacio privado.
Para mi usuario en particular
$ kpsewhich -var-value=TEXMFHOME
/home/emhn/texmf
$ mkdir -p /home/emhn/texmf/fonts
es necesario que exista el directorio de configuración local, con el subdirectorio para las fuentes. Aquí se pueden agregar todo tipo de fuentes para que TeX Live las aproveche, pero solamente accesibles a mi usuario.
El paquete
# apt install lcdf-typetools
incluye varias herramientas que asisten en la instalación de fuentes Type 1 u OpenType. Por razones históricas, que pueden estudiar a fondo en la documentación de TeX, el proceso de instalación de un conjunto de fuentes con un nombre particular, requiere tres pasos fundamentales:
Extraer la información contenida en los archivos
.otf
y calcular la información adicional necesaria para TeX, depositando los resultados en la estuctura local.$ autoinst autoinst .fonts/Quicksand-Regular.otf \ \ .fonts/Quicksand-Bold.otf \ .fonts/Quicksand-Italic.otf .fonts/Quicksand-BoldItalic.otf autoinst, version 20220124 [INFO] Generating fonts for Quicksand: 16 of 16 [INFO] Done generating fonts! Please update TeX's databases (by calling 'texhash' and 'updmap' or their equivalents on your system) before using these fonts.
El resultado será la creación (o actualización) de la jerarquía de archivos bajo
~/texmf/fonts/
, correspondiente a la información precalculada.$ tree texmf/fonts/ texmf/fonts/ ├── enc │ └── dvips │ └── Quicksand │ ├── a_7cn7o3.enc │ ├── a_bjndht.enc │ ├── a_u7nade.enc │ └── a_vftv2o.enc ├── map │ └── dvips │ └── Quicksand │ └── Quicksand.map ├── tfm │ └── lcdftools │ └── Quicksand │ ├── Quicksand-Regular-tlf-ly1--base.tfm │ ├── Quicksand-Regular-tlf-ly1--lcdfj.tfm │ ├── Quicksand-Regular-tlf-ly1.tfm │ ├── Quicksand-Regular-tlf-ot1--base.tfm │ ├── Quicksand-Regular-tlf-ot1--lcdfj.tfm │ ├── Quicksand-Regular-tlf-ot1.tfm │ ├── Quicksand-Regular-tlf-t1--base.tfm │ ├── Quicksand-Regular-tlf-t1--lcdfj.tfm │ ├── Quicksand-Regular-tlf-t1.tfm │ ├── Quicksand-Regular-tlf-ts1--base.tfm │ └── Quicksand-Regular-tlf-ts1.tfm ├── type1 │ └── lcdftools │ └── Quicksand │ ├── Quicksand-RegularLCDFJ.pfb │ └── Quicksand-Regular.pfb └── vf └── lcdftools └── Quicksand ├── Quicksand-Regular-tlf-ly1.vf ├── Quicksand-Regular-tlf-ot1.vf ├── Quicksand-Regular-tlf-t1.vf └── Quicksand-Regular-tlf-ts1.vf
Es crucial calcular la información usando todos los archivos
.otf
de la misma familia que se pretende usar, de manera que la herramienta pueda construir el mapa unificado, en este casoQuicksand.map
.Es posible procesar sólo un subconjunto de los archivos
otf
y luego «refrescarlo» agregando o eliminando según lo que se desea utilizar. Como mínimo es necesario incluir las fuentes regular, negrita, e itálica. La herramientaautoinst
extraerá todo lo que sea posible y pertinente para TeX, incluyendo símbolos matemáticos, «small caps», y decoraciones.Refrescar la lista de archivos en la instalación local usando
texhash
, tal como sugirió la corrida deautoinst
, pero para la instalación privada del usuario$ texhash ~/texmf texhash: Updating /home/emhn/texmf/ls-R... texhash: Done.
Incorporar el mapa recién creado al conjunto de mapas disponible para TeX Live, tal como sugirió la corrida de
autoinst
. Para que el mapa solamente sea tomado en cuenta en la instalación TeX Live de mi usuario$ updmap-user --enable Map=Quicksand.map
El comando produce una cantidad importante de información que permite determinar los mapas que están siendo actualizados y las características que pudieron ser extraídas para la fuente. El elemento clave a considerar es que la corrida de
updmap-user
va a tomar todos los mapas globales del sistema (lo que viene con los paquetes) y la combinará con el nuevo mapa, creando un mapa unificado local bajo el directorio~/.texlive2022/
personal.Este mapa unificado tiene precedencia sobre el mapa del sistema: si se actualizan los paquetes del sistema, o se instalan paquetes del sistema con fuentes adicionales, es necesario correr
updmap-user
para integrarlos nuevamente.
Completados estos pasos, se habrán generado automáticamente los archivos
$ tree texmf/tex/latex/Quicksand/
texmf/tex/latex/Quicksand/
├── LY1Quicksand-TLF.fd
├── OT1Quicksand-TLF.fd
├── Quicksand.sty
├── T1Quicksand-TLF.fd
└── TS1Quicksand-TLF.fd
esto es:
Todos los archivos
.fd
(font definition) relevantes para todos los tipos de codificación posibles (OT1, T1, LY1, TS1) según la información del OpenType. Es decir, si la fuente tiene menos o más métricas, habrá menos o más archivos. En el pasado, uno tenía que escribir estos archivos manualmente.Un archivo de estilo LaTeX que define la familia de fuentes, incluyendo todas las variantes (negritas, itálicas, etc.) posibles según los OpenType incluidos.
Solamente resta usarlos en un documento LaTeX y generar el PDF.
Independientemente del método utilizado, los comandos de formato
(\texbf
, \textit
, etc.) sacarán provecho de la fuente
instalada.
XeLaTeX
En escenarios en los cuales se puede usar XeLaTeX
# apt install texlive-xelatex
crear un documento LaTeX cuyo preámbulo contenga
\usepackage{fontspec}
\setmainfont{Quicksand-Regular.otf}[
Path = /home/emhn/.fonts/,
BoldFont = Quicksand-Bold.otf,
ItalicFont = Quicksand-Italic.otf, BoldItalicFont = Quicksand-BoldItalic.otf]
y procesarlo con xelatex
.
En efecto, XeLaTex no necesita toda la información bajo
~/texmf
y puede usar fuentes TrueType, pero es notablemente
más lento en la construcción de documentos, y no todos los
paquetes LaTeX funcionan para manipular la geometría de
las fuentes o meta-información para PDF.
No uso xelatex
, pero lo incluyo en la receta porque hay mucha
gente que usa OverLeaf a la que le puede
servir.
LuaLaTex
En escenarios en los cuales se puede usar LuaLaTeX
# apt install texlive-luatex
crear un documento LaTeX cuyo preámbulo contenga
\documentclass[12pt]{article}
\usepackage{fontspec}
\setmainfont{Quicksand-Regular.otf}[
Path = /home/emhn/.fonts/,
BoldFont = Quicksand-Bold.otf,
ItalicFont = Quicksand-Italic.otf, BoldItalicFont = Quicksand-BoldItalic.otf]
y procesarlo con lualatex
.
Aplican los mismos comentarios que con XeLaTeX, siendo LuaLaTeX aún más lento que XeLaTeX.
PDFLaTeX
Este es el que prefiero por «razones»: la generación es más rápida, hago cosas con TikZ que no funcionan del todo bien en XeLaTeX ni LuaLaTex, y tengo mejor control cuando necesito múltiples fuentes en el mismo documento.
Gracias al trabajo de autoinst
, basta crear un documento
cuyo preámbulo contenga
\usepackage[utf8]{inputenc}
\usepackage[OT1]{fontenc}
\usepackage{mweights}
\usepackage[mainfont]{Quicksand}
y procesarlo con pdflatex
.
Para usarlo con pandoc
Hoy en día, me resulta mucho más eficiente escribir artículos,
libros, o documentos simples, usando Markdown extendido con
fragmentos LaTeX, para luego procesarlos con pandoc
hast
generar el PDF final. La invocación de pandoc
permite seleccionar
el procesador PDF final, pero el preámbulo LaTeX es
diferente en cada caso. Mi solución preferida es tener un
archivo con el preámbulo particular para cada caso, e.g.
cuando quiero usar lualatex
como generador porque
necesito emojis
$ pandoc --include-in-header=lualatex-header.tex \
--pdf-engine=lualatex -o doc.pdf doc.markdown
donde lualatex-header.tex
contiene la definición de la
fuente discutida más arriba.
…y está en mi ambiente personal
Los fuentes están bajo ~/.fonts
, mientras que la configuración
de LaTeX y TeX Live está bajo ~/texmf/
y ~/.texlive2022
.
No necesito cooperación del administrador del sistema para
que la generación de PDF saque provecho de las fuentes. Además,
basta respaldar mi directorio personal para que la configuración
sea portable de una máquina a otra. Y cuando actualizo mi
sistema de una versión Debian a la siguiente, sólo tengo que
repetir los pasos 2
y 3
de la generación de fuentes.
En MacOSX y Windows debe ser mucho más fácil, dicen.