Se lavorate nel settore della ricerca, può esservi capitato, a volte, di avere la necessità di sottomettere un lavoro ad una conferenza che richiede l'utilizzo del sito IEEE PDF eXpress, per verificare se il vostro pdf rispetta le specifiche di compatibilità del sito IEEE Xplore PDF, nel quale avviene la pubblicazione online dei lavori.
Se vi è capitato, quasi sicuramente vi siete imbattuti in un errore di questo tipo:
Errors were found on pages 1-14. Font Helvetica, Times-Italic, Times-Roman, Times-Bold, Times-BoldItalic, Helvetica-Oblique, Courier is not embedded (1659x on pages 1-14).
Tale errore indica che i font che il vostro pdf richiede non sono inglobati nel pdf stesso. Questo comporta che, se un utente scarica il vostro articolo dal sito IEEE Xplore PDF e non ha installati sulla propria macchina i font che il pdf richiede, non sarà in grado di leggerlo correttamente. Proprio per questo la verifica dei font embedded è una delle prime effettuate dal tool automatico di verifica presente in IEEE PDF eXpress.
Esiste un comando che vi permette di verificare se il vostro pdf presenta dei font embedded o no e quali sono quelli non inclusi:
L'output è qualcosa del genere:
Tutti i no nella 3° colonna sotto emb sono i responsabili dell'errore che ci infastidisce.
Bando alle ciance come è possibile inserire i font all'interno del pdf in modo che questo errore scompaia? Niente di più semplice. Basta utilizzare il comando updmap per configurare pdflatex e tutti gli altri tool latex in modo da inserire i font all'interno dei file di output generati. In particolare basterà lanciare la seguente serie di comandi:
Compilando il vostro sorgente latex e rilanciando il comando
Come vedete i font vengono adesso riconosciuti e abbiamo tutta una serie di yes nella terza colonna sotto emb. Noterete che è presente un solo no in corrispondenza del font Helvetica. Nel mio caso tale font è utilizzato solo all'interno delle immagini inserite nell'articolo. Per fare in modo che le immagini eps o pdf prodotte da tool come gnuplot o inkscape (sono i tool che utilizzo io) presentino anch'esse i font embedded sarà necessario qualche accorgimento che sarà oggetto di un prossimo post.
PS: una procedura più semplice:
$ pdftops mypdf.pdf
$ mv mypdf.ps mypdf_ok.ps
$ ps2pdf -dEmbedAllFonts=true -dPDFSETTINGS=/prepress mypdf_ok.ps
Se vi è capitato, quasi sicuramente vi siete imbattuti in un errore di questo tipo:
Errors were found on pages 1-14. Font Helvetica, Times-Italic, Times-Roman, Times-Bold, Times-BoldItalic, Helvetica-Oblique, Courier is not embedded (1659x on pages 1-14).
Tale errore indica che i font che il vostro pdf richiede non sono inglobati nel pdf stesso. Questo comporta che, se un utente scarica il vostro articolo dal sito IEEE Xplore PDF e non ha installati sulla propria macchina i font che il pdf richiede, non sarà in grado di leggerlo correttamente. Proprio per questo la verifica dei font embedded è una delle prime effettuate dal tool automatico di verifica presente in IEEE PDF eXpress.
Esiste un comando che vi permette di verificare se il vostro pdf presenta dei font embedded o no e quali sono quelli non inclusi:
$ pdffonts mypdf.pdf
L'output è qualcosa del genere:
name type emb sub uni object ID ------------------------------------ ----------------- --- --- --- --------- [none] Type 3 yes no no 11 0 Helvetica Type 1 no no no 8 0 Times-Italic Type 1 no no no 14 0 Times-Roman Type 1 no no no 9 0 Times-Bold Type 1 no no no 13 0 [none] Type 3 yes no yes 26 0 [none] Type 3 yes no yes 35 0 Times-BoldItalic Type 1 no no no 33 0 Helvetica-Oblique Type 1 no no no 44 0 [none] Type 3 yes no no 43 0 Courier Type 1 no no no 51 0 [none] Type 3 yes no yes 62 0 [none] Type 3 yes no no 73 0 [none] Type 3 yes no no 109 0 [none] Type 3 yes no no 93 0 [none] Type 3 yes no no 90 0 [none] Type 3 yes no no 88 0 [none] Type 3 yes no no 154 0 [none] Type 3 yes no no 152 0 [none] Type 3 yes no no 150 0 [none] Type 3 yes no yes 148 0
Tutti i no nella 3° colonna sotto emb sono i responsabili dell'errore che ci infastidisce.
Bando alle ciance come è possibile inserire i font all'interno del pdf in modo che questo errore scompaia? Niente di più semplice. Basta utilizzare il comando updmap per configurare pdflatex e tutti gli altri tool latex in modo da inserire i font all'interno dei file di output generati. In particolare basterà lanciare la seguente serie di comandi:
$ updmap --setoption pdftexDownloadBase14 true
$ updmap --setoption dvipsPreferOutline true
$ updmap --setoption dvipsDownloadBase35 true
$ updmap --setoption dvipdfmDownloadBase14 true
Compilando il vostro sorgente latex e rilanciando il comando
$ pdffonts mypdf.pdf
adesso otterremo un output come il seguente output:name type emb sub uni object ID ------------------------------------ ----------------- --- --- --- --------- XUWBUR+NimbusRomNo9L-ReguItal Type 1C yes yes no 16 0 YXMBPZ+NimbusRomNo9L-Medi Type 1C yes yes no 14 0 XGMSCW+CMSY10 Type 1C yes yes no 12 0 LSNASR+NimbusRomNo9L-Regu Type 1C yes yes no 10 0 PKDQII+NimbusSanL-Regu Type 1C yes yes no 8 0 CVCBUP+CMMI12 Type 1C yes yes no 28 0 GQHPRH+CMMI8 Type 1C yes yes no 37 0 RHZTYV+NimbusRomNo9L-MediItal Type 1C yes yes no 35 0 URIFNC+NimbusSanL-ReguItal Type 1C yes yes no 46 0 EKJBZX+CMMI10 Type 1C yes yes no 44 0 KNVWMN+NimbusMonL-Regu Type 1C yes yes no 53 0 WNGVSG+CMR12 Type 1C yes yes no 60 0 OZBJDZ+CMMI6 Type 1C yes yes no 72 0 SYGRQK+CMSY8 Type 1C yes yes yes 78 0 YICAIF+CMR8 Type 1C yes yes no 76 0 VMCEHD+CMEX10 Type 1C yes yes yes 74 0 OTJKZH+CMR7 Type 1C yes yes no 96 0 YGZXPE+CMSY7 Type 1C yes yes no 94 0 QSBHWY+CMR10 Type 1C yes yes no 92 0 EHWOBO+CMMI7 Type 1C yes yes no 90 0 Helvetica Type 1 no no no 103 0
Come vedete i font vengono adesso riconosciuti e abbiamo tutta una serie di yes nella terza colonna sotto emb. Noterete che è presente un solo no in corrispondenza del font Helvetica. Nel mio caso tale font è utilizzato solo all'interno delle immagini inserite nell'articolo. Per fare in modo che le immagini eps o pdf prodotte da tool come gnuplot o inkscape (sono i tool che utilizzo io) presentino anch'esse i font embedded sarà necessario qualche accorgimento che sarà oggetto di un prossimo post.
PS: una procedura più semplice:
$ pdftops mypdf.pdf
$ mv mypdf.ps mypdf_ok.ps
$ ps2pdf -dEmbedAllFonts=true -dPDFSETTINGS=/prepress mypdf_ok.ps