Solución:
La codificación de salida, por ejemplo T1
determina, como dice Bernard, qué personajes van en qué espacios. Pero una codificación también puede especificar ligaduras, como lo hace T1. Por ejemplo, le dice a TeX que si un f
es seguido por un i
, debe reemplazar la secuencia de dos caracteres con un carácter de un tercer espacio que contiene el fi
ligaduras.
Además, cuando carga una codificación en particular, LaTeX usará un conjunto particular de definiciones cuando solicite varios caracteres. Por ejemplo, dependiendo de los detalles de su configuración, puede establecer asignaciones de secuencias particulares de caracteres a caracteres Unicode particulares. Debido a que T1 incluye muchos caracteres acentuados, por ejemplo, estos se pueden asignar a puntos únicos en Unicode. Esto hace posible buscar archivos creados con T1 más fácilmente, en muchos casos, que archivos de apariencia similar creados con OT1. Dependiendo de la fuente, la apariencia también suele ser superior. Esto se debe a que TeX debe crear caracteres acentuados sobre la marcha en OT1 en lugar de utilizar los caracteres especialmente diseñados para representarlos. Por ejemplo â
podría ser creado a partir de lo sin acento a
y el ^
acento, en lugar de usar el â
.
Cuando llamas a un paquete como tgpagella
, configura las fuentes para usted. Puede hacer esto directamente usted mismo: el paquete es solo una conveniencia.
Una linea como
usefont
es un comando de nivel inferior que especifica una fuente en particular. Lo que hacen la mayoría de los paquetes de fuentes es configurar fuentes de documento predeterminadas o crear macros convenientes para acceder a una fuente de propósito especial.
LaTeX define usefont
como sigue:
defusefont#1#2#3#4fontencoding#1fontfamily#2%
fontseries#3fontshape#4selectfont
ignorespaces
Ahora considere una fuente de propósito especial, como la que admite GoudyIn.sty
. Esto define dos macros de la siguiente manera
DeclareRobustCommandGoudyInfamily%
fontencodingU%
fontseriesxl%
fontshapen%
fontfamilyGoudyIn%
selectfont
DeclareTextFontCommandgoudyinGoudyInfamily
Puede usar estos comandos directamente en su documento o usar use
usefontUxlnGoudyIn
cada vez que quisiera usar la fuente. Pero eso sería tedioso y tendrías que recordar la codificación, la serie, la forma y el apellido en lugar de simplemente recordar
usepackageGoudyIn
y
goudyin
que es algo más conveniente.
Un paquete como tgpagella
es un poco más complejo, pero la línea más interesante para los propósitos actuales es.
renewcommandrmdefaultqpl
Esto establece la fuente serif predeterminada en qpl
. Esto significa que LaTeX intentará usar una fuente con la codificación de texto predeterminada (OT1 por defecto o algo más). Para ello, busca un archivo de definición de fuente.
. Por ejemplo, t1qpl.fd
o ot1qpl.fd
o lo que sea. Si encuentra esto, leerá el archivo que configura la fuente.
Por ejemplo, aquí hay parte de t1qpl.fd
:
DeclareFontFamilyT1qpl[email protected]@spacing
Esto crea una familia de fuentes para qpl
en el T1
codificación. Una vez que se define la familia de fuentes, el código especifica qué fuentes debe usar LaTeX para qué series y formas cuando esta familia de fuentes está activa.
La serie establece tanto el ancho relativo como el peso relativo, por ejemplo, negrita extendida o ligera condensada o estándar media.
DeclareFontShapeT1qplbsc<-> [email protected] ec-qplb-sc
Esto le dice a LaTeX que use la fuente ec-qplb-sc
cuando se solicitan letras minúsculas en negrita.
DeclareFontShapeT1qplbn<-> [email protected] ec-qplb
Vertical negrita.
DeclareFontShapeT1qplbscit<-> [email protected] ec-qplbi-sc
Letra cursiva en negrita. Esta no es una forma estándar, por lo que algunos paquetes de fuentes utilizan un nombre diferente para la misma forma. Por ejemplo, mis paquetes de fuentes usan si
para minúsculas en cursiva en lugar de scit
.
DeclareFontShapeT1qplbit<-> [email protected] ec-qplbi
Negrita cursiva.
Y ahora el peso normal … mdseries
.
DeclareFontShapeT1qplmsc<-> [email protected] ec-qplr-sc
DeclareFontShapeT1qplmn<-> [email protected] ec-qplr
DeclareFontShapeT1qplmscit<-> [email protected] ec-qplri-sc
DeclareFontShapeT1qplmit<-> [email protected] ec-qplri
Esas son todas las fuentes proporcionadas. Sin embargo, el valor predeterminado para bfseries
en LaTeX no es b
pero bx
. Esta fuente no proporciona bx
, por lo que LaTeX tendrá que sustituir algo. De forma predeterminada, sustituirá al medio y emitirá una advertencia. Eso no es genial. Probablemente preferiríamos que lo sustituyera en negrita b
en lugar de medio m
y probablemente tampoco queremos una advertencia cada vez que usamos negrita.
Afortunadamente, las definiciones de fuente especifican sustituciones adecuadas.
DeclareFontShapeT1qplbxsc<->ssub * qpl/b/sc
Si se solicita negrita extendida en minúscula, sustitúyala ‘silenciosamente’ con negrita en minúscula. Es decir, use negrita, no mediana, y no emita una advertencia.
DeclareFontShapeT1qplbxn<->ssub * qpl/b/n
DeclareFontShapeT1qplbxscit<->ssub * qpl/b/scit
DeclareFontShapeT1qplbxit<->ssub * qpl/b/it
Esta fuente tiene cursiva pero no oblicua. De forma predeterminada, LaTeX sustituirá a vertical si se solicita oblicua. Sin embargo, en este caso
DeclareFontShapeT1qplbsl<->sub * qpl/b/it
le dice a LaTeX que sustituya la negrita en cursiva por oblicua negrita. Esta sustitución no es silenciosa; es más probable que el usuario quiera saber sobre esto, por lo que LaTeX emitirá una advertencia.
DeclareFontShapeT1qplmsl<->sub * qpl/m/it
DeclareFontShapeT1qplbscsl<->sub * qpl/b/scit
DeclareFontShapeT1qplmscsl<->sub * qpl/m/scit
Lo siguiente está algo simplificado para proporcionar una imagen general del proceso que sigue. De lo contrario, la cantidad de posibles complicaciones y posibilidades, junto con cada detalle, daría como resultado una explicación tan clara como el proverbial barro. (Puede pensar que ya es bastante parecido a un pantano, pero créanme cuando digo que podría empeorar mucho).
Advertencia emptor …
Una vez que LaTeX conoce la fuente que necesita encontrar, intenta encontrar una fuente TeX con ese nombre.
Digamos que necesita ec-qplr-sc
porque o cargaste tgpagella
y luego dijo
scshape
o
textsc
o porque dijiste
fontencodingT1fontfamilyqplfontseriesmfontshapescselectfont
o
usefontT1qplmsc
Entonces LaTeX buscará un archivo TeX Font Metric ec-qplr-sc.tfm
. Este archivo proporciona a LaTeX una variedad de información. En particular, le dice a TeX el tamaño del cuadro necesario para cada carácter y cómo mover los cuadros hacia la izquierda o hacia la derecha dependiendo de qué cuadro viene inmediatamente antes o inmediatamente después. También puede decirle a TeX que reemplace una secuencia de dos casillas por una tercera casilla, por ejemplo. También proporciona información general sobre el tamaño natural de la fuente, etc.
Si compila con LaTeX, eso es todo. El DVI solo contiene información sobre cajas. Depende del espectador o del postprocesador decidir qué poner en cada caja. Si está compilando con pdfLaTeX, debe hacerlo como parte integral de la compilación.
Para saber qué poner en cada cuadro, pdfTeX o el visor o post-procesador DVI deben averiguar dónde está la información para dibujar los glifos de los personajes.
Para hacer esto, busca una línea en un .map
expediente. Cuales .map
El archivo depende del motor o posprocesador actual. Supongamos que está utilizando pdfTeX, luego consultará pdftex.map
y busque la línea correspondiente.
ec-qplr-sc TeXGyrePagella-Regular " encqecsc ReEncodeFont "
Esto le dice a pdfTeX que vuelva a codificar la fuente en qplr.pfb
utilizando el q-ec-sc.enc
codificación. Esto significa que sabe que la información sobre cómo dibujar los glifos está en qplr.pfb
pero la información no está en el orden requerido. q-ec-sc.enc
le dice a pdfTeX cómo encontrar la información de un carácter en el PFB aunque los caracteres en el PFB no estén en el mismo orden que la codificación de salida actual.
Este es el caso simple. Si se trata de fuentes virtuales, las cosas se complican un poco. Sin embargo, ese no es el caso de qpl
, por lo que la historia hasta ahora es suficiente.
Para LaTeX, más precisamente para NFSS (New Font Selection Scheme), una fuente se caracteriza por 4 parámetros: su encoding
, su name
, su weight
y es shape
.
La codificación de fuentes solo corrige la forma en que LaTeX codifica las fuentes, es decir, describe qué glifo está asociado con cada número de ranura:
OT1
(la codificación predeterminada) es para alfabetos sin signos diacríticos (aproximadamente ASCII) y usa 7 bits por carácter.
Las otras codificaciones usan 8 bits:
T1
es para el alfabeto latino; tiene la mayoría de los diacríticos utilizados en los idiomas de Europa occidental.
T2A, T2B, T2C
son alfabetos cirílicos.
LGR
es para griego (monótono y politónico).
Por otro lado, la familia de fuentes es solo un conjunto de glifos. Por ejemplo phv
es el nombre corto de LaTeX de la familia Adobe Helvetica
, y se vuelve a codificar para que la utilice LaTeX (la codificación es diferente de la codificación de Adobe).