Instalando Fontes
Origem: Tex-Br, a enciclopédia livre.
Uma instalação padrão do LATEX utiliza uma variedade bem limitada de fontes. Além das fontes originais, em METAFONT, algumas poucas dezenas de fontes em formato PostScript (Type1) também estão disponíveis.
Infelizmente, estas poucas fontes não são suficientes para criar documentos de aparência profissional -- especialmente se você pretende usar o LATEX para produzir arquivos PDF.
Conteúdo |
Introdução e Créditos
Este tutorial pretende te ensinar a instalar fontes "sem dor" e é baseado no texto Installing a type-1 font for TeX/LaTeX, de Fulko van Westrenen -- o único tutorial sobre instalação de fontes no LATEX que cumpre o que promete. Dois dos scripts originais do Sr. van Westrenen são usados sem modificação (até que algum mago de scripting crie novas versões), os demais foram criados ou adaptados para funcionar na distribuição Ubuntu e também devem funcionar nas distribuições Debian.
Antes de começar, é bom conhecer as fontes originais do LATEX.
Princípios Gerais
Para instalar uma fonte no LATEX você precisa de:
- Arquivos de fonte em formato METAFONT, PFA ou PFB (fontes TrueType precisam ser convertidas para um destes formatos).
- Arquivos de métricas (AFM), caso use fontes Type1 (PFA/PFB).
- Uma instalação completa e funcional da distribuição chamada
tetex. Este tutorial não funciona com outras distribuições, que eu saiba. - Conhecer, pelo menos razoavelmente, como funciona a estrutura de diretórios de uma instalação do
tetex. - Criar um diretório local para o
texmf, isto é, um segundo diretório comum de configuração, que não interfira com a instalação padrão. Recomendo criar a pasta/usr/local/share/texmf, pois todos os scripts anexados a esta página assumem sua existência.
Procedimento Padrão
- Crie um diretório e copie para dentro dele a família de fontes que você quer instalar.
- Se a fonte é TrueType (TTF), execute o script de conversão de sua preferência (PFA para maior velocidade de download, PFB para menos espaço em disco).
- Renomeie a fonte para o padrão LaTeX. O nome padrão LaTeX para um grande número de fontes pode ser encontrado neste diretório do Grupo de Usuários de TeX, separados em diversos arquivos, de acordo com a empresa distribuidora da fonte (Adobe, Bitstream, Monotype, ITC, etc.).
- Se a sua fonte for PFB e você não possua os arquivos AFM correspondentes, execute o comando
type1afmpara criá-los (esses AFMs não serão tão bons quanto os originais, no entanto). Você pode obter os AFMs originais nos diretórios FTP dos distribuidores de sua fonte, os da Adobe, por exemplo, estão aqui, aqui ou aqui. - Se desejar converter sua fonte PFB para PFA antes de instalar, execute o script apropriado.
- Ponha todos os arquivos em um mesmo diretório junto com o arquivo adobe.map e outros
.mapque sejam necessários e renomeie os arquivos para o padrão TeX. Não há nenhuma maneira automatizada de fazer isso, você terá de renomear os arquivos manualmente. Uma boa opção para isso é o programa gprename, que é leve, funcional e praticamente sem bugs. - Crie um arquivo chamado
convert.tex, contendo os comandos listados na seção deste nome, logo abaixo. Edite o arquivo de modo a refletir o nome correto da fonte que você quer instalar. Quando você tentar compilar este arquivo com o TEX ou (não recomendado) o LATEX ofontinst.styvai gerar um bom número de arquivos contendo as instruções necessárias. - Execute
tex convert.tex. - Crie um arquivo chamado
plconvert, contendo os comandos listados na seção deste nome, logo abaixo. - Execute
perl plconvertpara completar o processo de criação dos arquivos TEX. - Crie um arquivo chamado
plfontmap, contendo os comandos listados na seção deste nome, logo abaixo. - Execute
perl plfontmappara gerar o arquivopsfontsextra.map, necessário para o dvips. - Crie um arquivo de estilo para sua fonte. Use o conteúdo da seção
exemplo.stycomo modelo. Lembre-se de personalizar o que for necessário. - Crie um arquivo chamado
install.sh, contendo os comandos listados na seção deste nome, logo abaixo. Edite-o para usar os nomes certos de sua fonte. - Execute o arquivo
install.shpara copiar as fontes para os diretórios devidos. Tenha cuidado, pois este script remove todos os arquivos de fonte que estejam dentro dos diretórios de destino. - Acrescente o conteúdo do psfontsextra.map ao arquivo local psfonts.map, que pode estar em
/var/lib/texmf/dvips/configou/usr/local/lib/texmf/dvips/config. No Ubuntu este passo é feito automaticamente pelo script de instalação. - Execute, nesta seqüência, os comandos
texhash,update-updmapeupdmap. Se você obtiver uma mensagem de erro ao executarupdate-updmape não usa uma distribuição baseada em Debian, não se preocupe. - Para usar a nova fonte, use no preâmbulo de seu documento o comando
\usepackage{font}("font" é o nome da fonte que você instalou) ou então\renewcommand{\rmdefault}{XXX}(em que XXX é o nome-código da fonte que você instalou.
Scripts
Os seguintes scripts são usados para o processo de instalação.
Para conversão de formatos
Copie os seguintes scripts para arquivos de texto e execute-os dentro do diretório em que estão suas fontes que deseja converter. Importante!!! Não tente converter centenas de fontes de uma vez.
TTF para PFA
#!/bin/bash for a in *.ttf; do ttf2pt1 -e $a; done
PFB para PFA
#!/bin/bash for a in *.pfb; do pfb2pfa $a; done
TTF para PFB
#!/bin/bash for a in *.ttf; do ttf2pt1 -b $a; done
Para o processo de instalação
Estes scripts dependem de uma shell genérica (bash, dash ou tcsh) e de uma instalação básica do Perl.
convert.tex
\input fontinst.sty
\latinfamily {XXX}
\bye
No script acima, substitua "XXX" pelo nome-código da fonte que pretende instalar. Se você não sabe o nome LaTeX apropriado para a fonte que quer usar, poderá inventar um. O único problema, neste caso, é a portabilidade de seu documento (outras pessoas não saberão que fontes você usou e não poderão imprimi-lo de modo idêntico).
plconvert
#!/bin/bash # for f in *.pl ; do /usr/bin/pltotf $f ; done for f in *.vpl ; do /usr/bin/vptovf $f ; done
Este script é necessário porque o fontinst não cria os arquivos .tf e .vf que são necessários. Execute-o apenas após ter executado latex CONVERT.TEX.
plfontmap
#! /usr/bin/perl
# fontmap: program to make a psfonts.map
#
#
# put this with the font-files
# usage: ./fontmap
# depends on the existance of afm-files
# assumes the use of pfa-files
# Fulko van Westrenen
# 20 Jan 2003
sub findfontname {
my ($fn) = @_;
my $fontname;
open IN, "<$fn" ||die "cannot open $fn to read \n";
while (<IN>) {
if (/^FontName /) {
chomp;
$fontname = (split(/ /,$_))[1];
$fontname =~ tr/^A-Za-z0-9\-_/ /c; #remove rubbish
$fontname =~ s/ //g;
return $fontname;
close(IN);
}
}
return "";
close(IN);
}
$dir = `ls *.afm`;
$dir =~ s/\n/ /g;
@dir = split(/ +/, $dir);
open MAP, ">psfontsextra.map" ||die "cannot create file\n";
@tmp=@dir;
#get the normal fonts
for (grep(/8a.{0,1}\.afm/,@tmp)) {
$fn=$_;
$fontname=findfontname($fn);
$fn =~ s/\.afm//;
$bn = $fn;
$bn =~ s/8a/8r/;
print MAP "$bn $fontname \"TeXBase1Encoding ReEncodeFont \"
<8r.enc <$fn.pfa \n"
}
#make the oblique fonts
#remove them if the family contains a oblique version
# and this routime makes them also
@tmp=@dir;
for (grep(/[^io]8a.{0,1}\.afm/,@tmp)) {
$fn=$_;
$fontname=findfontname($fn);
$fn =~ s/\.afm//;
$bn = $fn;
$bn =~ s/8a/o8r/; #add "o"
print MAP "$bn $fontname \".167 SlantFont TeXBase1Encoding ReEncodeFont \"
<8r.enc <$fn.pfa \n"
}
@tmp=@dir;
#make the expert list
for (grep(/8x.{0,1}\.afm/,@tmp)) {
$fn=$_;
$fontname=findfontname($fn);
$fn =~ s/\.afm//;
$bn = $fn;
print MAP "$bn $fontname <$fn.pfa \n"
}
@tmp=@dir;
#make the specials
for (grep(/[0-7,9].{0,2}\.afm/,@tmp)) {
$fn=$_;
$fontname=findfontname($fn);
$fn =~ s/\.afm//;
$bn = $fn;
print MAP "$bn $fontname <$fn.pfa \n"
}
close MAP;
Este script cria um arquivo psfontsmap.map a partir das informações obtidas dos dados criados pelos scripts anteriores.
exemplo.sty
%%
%% This is file 'exemplo.sty'
%%
\ProvidesPackage{exemplo} % nome do arquivo de estilo
\renewcommand{\rmdefault}{XXX} % família de fonte com serifa (estilo times)
\renewcommand{\sfdefault}{YYY} % família de fonte sem serifa (estilo arial)
\renewcommand{\ttdefault}{ZZZ} % familia de fonte datilográfica
\renewcommand{\familydefault}{\sfdefault} % família usada para o texto
\endinput
Este arquivo seleciona um pacote de fontes para ser usado em seu documento. Substitua "exemplo" pelo nome da fonte (p. ex: "calisto") e XXX, YYY e ZZZ por famílias de fontes nomeadas segundo o esquema do LATEX.
O penúltimo comando é importante para definir qual família de fonte será padrão para o texto. No caso acima eu selecionei para padrão a fonte "sem-serifa".
Após editar este arquivo você pode, opcionalmente, renomeá-lo para o nome da familia de fontes que está instalando.
install.sh
Este é o arquivo mais importante, pois se ele estiver mal ajustado você pode danificar a sua instalação do tetex. Siga as instruções RIGOROSAMENTE.
IMPORTANTE: Este arquivo funciona nas distribuições Ubuntu 5.10 e Ubuntu 6.06 LTS (e suas variantes oficiais, Edubuntu, Xubuntu e Kubuntu). Não foi testado em distribuições Debian, mas deve funcionar normalmente. Usuários de outras distribuições, CUIDADO! A menos que vocês conheçam bem o seu sistema e saibam onde fazer as modificações necessárias para que o script funcione, PAREM POR AQUI.
#!/bin/bash #LaTeX type1-font install script #Fulko van Westrenen #1 july 1999 #set the correct fontname NAME=family FONT=/$NAME FOUNDRY=/foundry FORMAT=pfa|pfb BASEDIR=/usr/local/share/texmf AFM=/fonts/afm$FOUNDRY TFM=/fonts/tfm$FOUNDRY VF=/fonts/vf$FOUNDRY TYPE1=/fonts/type1$FOUNDRY FD=/tex/latex/psfonts mkdir -p $BASEDIR$AFM$FONT rm -f $BASEDIR$AFM$FONT/* cp *.afm $BASEDIR$AFM$FONT mkdir -p $BASEDIR$TFM$FONT rm -f $BASEDIR$TFM$FONT/* cp *.tfm $BASEDIR$TFM$FONT mkdir -p $BASEDIR$TYPE1$FONT rm -f $BASEDIR$TYPE1$FONT/* cp *.$FORMAT $BASEDIR$TYPE1$FONT mkdir -p $BASEDIR$VF$FONT rm -f $BASEDIR$VF$FONT/* cp *.vf $BASEDIR$VF$FONT mkdir -p $BASEDIR$FD$FONT rm -f $BASEDIR$FD$FONT/* cp *.fd $BASEDIR$FD$FONT cp *.sty $BASEDIR/tex/latex/styles$FONT.sty cp psfontsextra.map $BASEDIR/dvips/config/$FONT.map echo Map $NAME.map >> /etc/texmf/updmap.d/00updmap.cfg
Substitua "family" pelo nome da família de fontes que está instalando e "foundry" pelo nome da empresa que produz a fonte (você pode verificar isso no copyright). Ao fazer essa substituição, não apague a barra. No campo do formato, escolha pfa ou pfb e apague a outra opção (incluindo o sinal de pipe ("|").
Instalação de Fontes METAFONT
Estas fontes são instaladas através de scripts apropriados que as acompanham. Mais informação a respeito é necessária.
Problemas
- A fonte funciona no DVI mas não funciona em PDF nem PostScript: Você instalou a fonte corretamente, mas não a acrescentou corretamente ao mapa de fontes -- o que impede o
pdflatexedvipsde encontrarem-nas. Isto geralmente ocorre porque você se esqueceu de gerar opsfontsextra.mapantes de executar a instalação. - A fonte funciona perfeitamente nos arquivos gerados pelos comandos
latex arquivo.tex, pslatex arquivo.tex, dvips -o arquivo.ps arquivo.dviepdflatex arquivo.tex, mas há ero ao executardvipdfm arquivo.dvi: Esse ainda é um erro desconhecido. Você pode nos ajudar a resolver. - Não aparece texto nem no DVI, nem no PDF e nem no PS: Você instalou a fonte incorretamente. Remova sua instalação, reveja todos os passos e faça tudo de novo. Este problema ocorre comumente quando você está instalando para
/home/usuário/texmfem vez de/usr/local/share/texmf.
Dicas
Algumas fontes instaladas com o LATEX não vêm devidamente configuradas para a língua portuguesa, embora contenham todos os caracteres necessários. Um bom exemplo são as fontes "polonesas" (Antykwa Półtawskiego e Antykwa Toruńska): apesar dos nomes estranhos, estas são duas fontes muito bonitas e completas.
Localize onde estão os arquivos PFB destas fontes e proceda com eles do mesmo modo que para uma fonte normal (exceto que você deverá criar um nome personlizado, tipo "fap" e "fat", para cada uma).
Casos de sucesso
Até o presente momento, já obtive sucesso em instalar as seguintes famílias de fontes,utilizando esta receita:
- Monotype Calisto (TTF)
- Adobe Univers (PFB)
- Microsoft Georgia (TTF)
- Microsoft Trebuchet (TTF)
- Microsoft Comic Sans (eeeca!) (TTF)
- Bitstream News Gothic (PFB)
- Palatino Linotype (PFB)
- Adobe Myriad Pro (TTF)
- Monotype Times New Roman (TTF)
- Bitstream Futura (PFB)
- DejaVu (TTF)
As seguintes famílias de fontes não funcionaram:
- Bigelow & Holmes Luxi (TTF)
- Bigelow & Holmes Lucida (TTF)
- Adobe Minion Pro (TTF)
- Microsoft Verdana (TTF)
