afm2pl - convertire le metriche dei caratteri AFM in metriche dei caratteri TeX pl
afm2pl [-p encoding_file] [-o] [-e extension_factor] [-s slant_factor] [-f font_dimensions] [-k] [-m letter_spacing] [-l ligkern_spec] [-L ligkern_spec] [-n] input_file[.afm] [output_file[.pl]]
afm2pl [--help] | [--version]
afm2pl converte un file afm (Adobe Font Metric) in un file pl (Property List), che a sua volta può essere convertito in un file tfm (TeX Font Metric). Normalmente conserva kern e legature, ma offre anche un ulteriore controllo su di esse.
afm2pl vuole essere una parziale sostituzione di afm2tfm, su cui si basa. Con afm2tfm, la conservazione di kern e legature è possibile solo in modo indiretto e la loro gestione è cablata.
Per i caratteri di testo, texnansi di Y&Y è una buona codifica da utilizzare con afm2pl. Il suo set di caratteri include tutti i caratteri accentati che potrebbero essere necessari per le lingue occidentali, oltre a molti simboli tipografici, senza la necessità di font virtuali o di un font complementare di testo separato.
Il pieno supporto LaTeX per questa codifica è disponibile sotto forma del pacchetto texnansi, che fa già parte di TeX Live e teTeX. Queste distribuzioni contengono anche il file di codifica texnansi.enc.
La distribuzione contiene versioni maiuscole e minuscole di texnansi, vale a dire. texnanuc e texnanlc, per consentire lettere maiuscole e minuscole basate su font piuttosto che basate su macro, e la familiare vecchia codifica ot1 più alcune variazioni nel formato PostScript .enc (le ho incluse perché sembrano essere assenti da teTeX/TeX Live). Tuttavia, controlla i tuoi mapfile se hai vecchi font generati da afm2pl che li usano.
Valore di ritorno: 0 se nessun errore; un numero negativo che indica il numero di glifi mancanti se la conversione è andata a buon fine ma i glifi sono mancanti e 1 in caso di errore.
-p file_codifica
L'impostazione predefinita è la codifica specificata nel file afm, che dovrebbe corrispondere meglio alla codifica nel fontfile (pfa o pfb). Se afm2pl-name.enc esiste, afm2pl utilizzerà questo file invece di name.enc, a meno che non sia data un'opzione -n. La voce del mapfile generata (vedi sotto) indica a pdftex o al driver dvi di ricodificare il font al volo. La ricodifica al volo non richiede font virtuali.
-o
Usa ottale per tutti i codici carattere nel file pl.
-e extend_factor
Allarga o restringi i caratteri con extend_factor. Il valore predefinito è 1.0 (larghezza naturale). Non consigliato[1].
-s slant_factor
Caratteri obliqui (obliqui) per slant_factor. Non consigliato neanche.
-f font_dimensions
Il valore è la parola chiave afm2tfm o un elenco separato da virgole di massimo cinque numeri interi. I parametri sono elencati di seguito, con i loro valori predefiniti e il loro valore quando viene specificata la parola chiave afm2tfm. "Spazio" indica la larghezza di uno spazio nel carattere di destinazione, tranne ovviamente nell'ultima riga. Tieni presente che la dimensione del progetto è 1000 e che tutti i numeri devono essere numeri interi non negativi.
Font dimension Default value Afm2tfm value stretch space div 2 300 × extend_factor shrink space div 3 100 × extend_factor extra space space div 3 missing quad 2 × width of ‘0’ 1000 × extend_factor space (space source font) × extend_factor (space source font) × extend_factor Per i caratteri a passo fisso, si applicano valori diversi:
Font dimension Default value Afm2tfm value stretch 0 0 shrink 0 0 extra space space missing quad 2 × character width 1000 × extend_factor space character width character width Specifica solo un allungamento e un restringimento non predefiniti con ad es. 150,70 e solo uno spazio extra non predefinito con ,,10.
-k
Mantieni le legature originali. Questa opzione ha effetto solo in combinazione con spaziatura lettere positiva; vedere la sezione sulla spaziatura delle lettere e informazioni extra su ligkern.
-m spaziatura_lettera
Letterspace per letter_spacing/1000 em (numero intero). Questo è utile per migliorare l'aspetto della composizione tipografica tutto maiuscolo. Prova un valore ad es. 50 o 100. Ma vedi la sezione sulla spaziatura delle lettere e informazioni extra per i dettagli. Un'alternativa migliore, tuttavia, è lasciare che pdftex esegua la spaziatura delle lettere. Il pacchetto microtype offre agli utenti LaTeX l'accesso a questa funzionalità.
-l ligkern_spec, -L ligkern_spec
Vedere la sezione sulle informazioni extra ligkern per i dettagli.
-n
Nessun prefisso. Per i file .enc- e .lig, il programma normalmente fa precedere il nome da `afm2pl-'. Solo se il nome file con prefisso non viene trovato, cercherà il nome file originale. Questa opzione impedisce la ricerca del nome file con prefisso.
-V
Prolisso. Se attivato, riporta il numero di glifi mancanti a stderr ei loro nomi a stdout.
--aiuto
Visualizza un breve messaggio di utilizzo.
--versione
Visualizza il numero di versione di afm2pl.
afm2pl scrive una voce mapfile in un file con lo stesso nome di base del file di output pl, ma con estensione .map. Può essere utilizzato per il mapfile dvips e per il mapfile pdftex. Si presuppone che il file pfb abbia lo stesso nome di base del file afm e debba essere scaricato. Potrebbe essere necessario modificare manualmente questa voce.
Puoi configurare dvips e pdftex per leggere questo mapfile aggiuntivo o altrimenti aggiungere la voce a un mapfile esistente.
Controlla i tuoi mapfile! Per ridurre la probabilità di conflitti di nome, i file .enc- che fanno parte di afm2pl (ot1, ot1csc, ot1ital, ot1tt, texnanlc e texnanuc) sono stati ora preceduti da afm2pl-. I file .enc sono referenziati nei mapfile. Se si dispone di vecchi file .tfm generati da afm2pl che li utilizzano, è necessario aggiornare i loro frammenti mapfile ed eseguire nuovamente updmap o updmap-sys. Oppure puoi copiare i file enc rilevanti nel tuo albero texmf personale o locale sotto i loro precedenti nomi senza prefisso.
Si consiglia alla maggior parte degli utenti di lasciar perdere questo pasticcio e di accettare il comportamento predefinito.
Le legature e le kern presenti nel file afm possono essere modificate in vari modi. Per impostazione predefinita, il file di codifica viene scansionato per ulteriori specifiche ligkern, il cui formato verrà descritto di seguito. Se non ci sono specifiche ligkern nel file di codifica, le specifiche ligkern aggiuntive verranno lette da un file [afm2pl-]default.lig. Un valore pari a 0 per ligkern_spec significa che le legature e le crenature del file afm non verranno manomesse e un valore pari a 1 specifica il comportamento predefinito. Si può anche specificare un elenco di file separati da virgole con specifiche extra ligkerns.
Se afm2pl è compilato con la libreria kpathsea, questi file verranno cercati in $TEXMF/fonts/lig.
Notare che le legature e le kern sono suggerimenti per l'applicazione di impaginazione; non è necessario scaricare queste informazioni sulla stampante o renderle disponibili a un driver dvi.
Il parser per le informazioni ligkern è stato ereditato da afm2tfm praticamente senza modifiche. Una specifica ligkern può avere una delle seguenti forme:
glyph_name1 glyph_name2 lig_op glyph_name3 ;
Questo specifica una legatura. I valori possibili per lig_op sono =:, |=:, |=:>, =:|, =:|>, |=:|, |=:|> e |=:|>> . Questi corrispondono a LIG, /LIG, /LIG>, LIG/, LIG/>, /LIG/, /LIG/>, /LIG/>> nella sintassi .pl; vedere la documentazione pltotf ei file .lig nella distribuzione.
glyph_name1 <> glyph_name2 ;
Kern glyph_name1 come glyph_name2.
glyph_name1 {} glyph_name2 ;
Rimuovi la crenatura tra glyph_name1 e glyph_name2. Un valore * per entrambi i nomi dei glifi viene interpretato come carattere jolly.
|| = glyph ;
Imposta il carattere limite (destro) su glifo. glifo può essere un nome di glifo o uno slot nel vettore di codifica. La scelta di un glifo che non compare nella codifica di output equivale a non specificare affatto un boundarychar. Va bene scegliere un glifo codificato che non compare nell'afm. Infatti, questo è ciò che fa default.lig: ||=cwm ;.
Puoi copiare i kern di un carattere non codificato nel boundarychar. Sotto, lo spazio è il carattere non codificato:
|| <> space ;
Questa specifica ligkern dovrebbe verificarsi prima di quella che elimina i kern spaziali.
Una specifica ligkern dovrebbe essere contenuta all'interno di una riga. Una riga può contenere diverse specifiche ligkern, separate da spazi. Notare che ; (spazio seguito da punto e virgola) è considerato parte della specifica ligkern. Guarda i file lig inclusi in questa distribuzione. Esempio:
one {} * ; * {} one ; two {} * ; * {} two ;
Le righe con le specifiche ligkern all'interno di un file di codifica dovrebbero iniziare con % LIGKERN. Le specifiche Ligkern in un file lig possono facoltativamente iniziare in questo modo.
La spaziatura delle lettere ha vari effetti collaterali per le informazioni di ligkern. Invece di applicare semplicemente le informazioni extra ligkern (vedere la sezione precedente), viene eseguito quanto segue:
In caso di spaziatura lettere positiva, le legature native vengono rimosse, a meno che non sia specificata l'opzione -k.
Le informazioni aggiuntive su ligkern vengono applicate come al solito, eccetto che in caso di spaziatura positiva delle lettere si applicano diversi valori predefiniti: -l 0 viene tranquillamente ignorato, i commenti ligkern nel file di codifica vengono ignorati e defpre.lig viene letto invece di default.lig.
Viene applicata la spaziatura delle lettere. Questo aggiunge molti kern e modifica i kern esistenti.
Vengono applicate le informazioni extra ligkern specificate con -L. Le uniche specifiche di ligkern consentite qui sono le rimozioni delle coppie di crenatura (con l'operatore {}). I valori 0 e 1 hanno un significato simile a quello del parametro -l. Il formato tfm ha spazio solo per legature e coppie di crenatura 180x180 circa. Questo è sufficiente per la codifica OT1, ma per la codifica texnansi è necessario rimuovere alcune specifiche ligkern. Il programma pltotf rimuoverà tutte le informazioni ligkern se rimangono troppe legature e kern. Il file lig predefinito è defpost.lig. Questo file elimina le coppie di crenatura che è improbabile che siano coinvolte nella spaziatura delle lettere, come le crene che coinvolgono accenti o le crene con un carattere di punteggiatura o una parentesi destra a sinistra. Non aggiunge kern di spaziatura delle lettere che coinvolgono caratteri di confine. Invece, fontspace è aumentato del doppio della spaziatura delle lettere. defpost.lig elimina abbastanza kern in caso di codifica texnansi. Con altre codifiche, potrebbe essere necessario eliminare coppie di crenatura aggiuntive.
La distribuzione include i vettori di codifica texnanuc.enc e texnanlc.enc che producono caratteri tutti maiuscoli e tutti minuscoli
Gli usi principali per un carattere tutto maiuscolo sono le intestazioni di pagina e le intestazioni di sezione. Se questi contengono elementi matematici, le maiuscole basate su macro creerebbero spiacevoli complicazioni. Esempio:
afm2pl -p texnanuc ptmr8a ptmup8y pltotf ptmup8y
Per ottenere i migliori risultati, dovresti aggiungere un po' di spaziatura tra le lettere. In LaTeX, è meglio farlo con il pacchetto microtype; vedere la documentazione di quel pacchetto. Ma può anche essere fatto con afm2pl:
afm2pl -p texnanuc -m 100 ptmr8a ptmup8y
Ciò richiede cautela; vedi sopra.
Puoi utilizzare questo nuovo font nel contesto della selezione dei font LaTeX come segue:
<preamble commands> \makeatletter {\nfss@catcodes \DeclareFontShape{LY1}{ptm}{m}{upp}{<-> ptmup8y}{}} \makeatother ... \begin{document} ... {\fontshape{upp}\selectfont uppercase text}
Si noti che upp è semplicemente un nome di forma appena inventato.
Si noti che la codifica texnanuc non fornisce glifi per la legatura sz ß; dovrai sostituire ss o fornire una soluzione basata su macro. Il codice seguente utilizza il solito glifo o sostituisce le lettere ss, a seconda che il glifo esista nel font corrente:
\def\ss{% \setbox0\hbox{\char25}% \ifnum\wd0=0 ss\else\box0\fi }
In LaTeX, questo codice sembra funzionare abbastanza bene, anche se a volte potrebbe essere necessario inserire \protect. Una soluzione migliore potrebbe coinvolgere il sesto parametro della macro \DeclareFontShape, ma non sono riuscito a farlo funzionare.
Afm2pl non esegue font virtuali. Ciò significa che per cose come le maiuscole artificiali devi rivolgerti altrove, ad es. al pacchetto fontinst, che fa parte di qualsiasi distribuzione TeX mainstream.
Guarda sotto texmf/tex/fontinst per i file di supporto fontinst, che ti permettono di generare un font smallcaps (file tfm e vf) da un file tfm generato da afm2pl. Questo pacchetto supporta solo la codifica texnansi.
Non dovrebbero esserci problemi reali nel fare lo stesso per la codifica OT1. Tuttavia, ci sono diverse varianti della codifica OT1 di cui occuparsi. Inoltre, per quanto ne so, non ci sono nomi PostScript approvati ufficialmente per tutte le varianti della codifica OT1; i nomi Fontinst contengono spazi e pertanto non sono utilizzabili come nomi PostScript.
Per evitare conflitti di nome, i file .enc- e .lig distribuiti con afm2pl hanno afm2pl- anteposto al loro nome. Il programma stesso ora cerca prima il nome così anteposto. Se il file .enc- o .lig non viene trovato, cercherà il nome file originale. La ridenominazione dei file afm2pl .enc potrebbe richiedere la modifica di alcuni mapfile.
La home page di afm2pl è http://tex.aanhet.net/afm2pl/.
L'articolo Installazione dei caratteri in modo poco profondo[2] (EuroTeX 2006 Proceedings, pubblicato come TUGboat[3] numero 27.1) illustra l'uso di afm2pl.
Tranne che probabilmente un Courier ristretto è meno stridente di un Courier a larghezza intera, se usato in combinazione con un normale carattere proporzionale. Per Courier, scegli .833 per abbinare la larghezza di cmtt. Meglio ancora, non usare affatto Courier; la maggior parte delle distribuzioni TeX offre vari buoni sostituti.
Installazione dei caratteri in modo superficiale
https://tug.org/TUGboat/tb27-1/tb86kroonenberg-fonts.pdf
afm2pl viene mantenuto come parte di TeX Live.