目錄:
[正文] Adobe Acrobat打印解決字體嵌入問題
[Appendix I] Type3轉TRUE Type/Type 1
[Appendix II] TRUE Type轉Type 1 (並embedded)
================================
准備提交給ACM與IEEE的論文時,我們手頭的文檔除了有明確具體字體類型的Type1和TrueType字體外,還經常會出現Type3字體,這種字體現在在雜志印刷過程中是不予接受的。
Type 3 字體是矢量外框字體,很多網站所稱Type 3是點陣字體其實是錯誤的。不同於 Type 1,PostScript Type 3 字體不支援 Hinting,該技術優化了小字型的字形狀,意味着 PostScript Type 1 在低解析度的雷射印表機或是熒幕上的品質表現略勝一籌。[1][2]
Latex不能精確識別的字體也會被歸類到Type 3。這種字體在印刷刊物中有可能出現印刷錯誤,編譯為.dvi文件時也有幾率發生錯誤。Type 3基本上已經被淘汰,在正式文檔中是需要盡量規避的。
實際上重新打印就能解決。
Adobe Acrobat打印解決字體嵌入問題
1. 定位問題:
下載Adobe Acrobat進行查看以及后續的嵌入 (注意!不是Abobe Reader!)
Adobe Acrobat 9.0的無需激活破解版比較好找,以下是雲盤鏈接:
https://pan.baidu.com/s/12XD5YfaxCmB9L2cvVLugXA
http://pan.baidu.com/share/link?uk=1579679242&shareid=2902479474
https://www.panc.cc/s/[Acrobat.9.].APRO9_Win_ESD1_CS
安裝后,用Adobe Acrobat打開pdf,然后打開 文件-> 屬性,會看到沒有嵌入的字體
2. 嵌入字體
文件-> 打印 -> 打印機選adobe pdf -> 點選旁邊的屬性
在 adobe pdf設置 選項卡里,第一行找到 默認設置,點出下拉菜單,選高質量打印,點擊OK
另:順便查看下頁面大小(有些論文要求必須是Letter而不是A4),是否添加文檔信息(雙盲會議有些會要求pdf中不能包含任何文檔信息,以防泄露作者身份)
打印,所有type 3和true type都將被轉換為type 1,問題解決
另外,如果遇到保存時無法保存pdf,而是保存ps格式的情況,可能是distiller沒有啟動。可以手動在本地window應用搜索distiller,打開Acrobat Distiller后將ps文件轉換回pdf
Acrobat Distiller 概覽

A. 菜單 B. Adobe PDF 設置文件 C. 工作隊列里的文件 D. 失敗的作業 E. 上下文菜單 F. 狀態窗口
================================
下面是一些以前的老辦法,相比更加麻煩也不一定能起作用,僅供必要(如以上做法失效)時參考
Appendix I
一、Type3 文件的識別
1、整體識別
1)閱讀器
用adobe/foxit 等reader打開pdf文件,"文件 -> 屬性" 打開屬性對話框,找到“字體”項目,可以看到pdf所包含的字體信息。通常如果有type3,會直接顯示在最前面。
2)Linux下使用命令
要檢查PDF文件中包含了,或者使用了什么字體,你可以使用命令行工具:pdffonts。它是一個PDF字體分析工具。pdffonts是Poppler PDF工具集包中的一個部分。
a) 直接使用命令 [5]
pdffonts可以列出PDF文檔中使用的所有字體。
pdffonts的基本用法: pdffonts paper.pdf
pdffonts工具顯示了各個已使用的字體的各種信息,如字體名稱/類型等等。看輸出是否含有type3字體。
b) linux下安裝命令支持包
要安裝Poppler到Debian,Ubuntu或Linux Mint:
- $ sudo apt-get install poppler-utils
- $ sudo yum install poppler-utils
pdffonts可以列出PDF文檔中使用的所有字體。pdffonts的基本用法如下。
- $ pdffonts doc.pdf
2、問題定位
1)Windows
先注釋全文,編譯latex,查看生成pdf內字體類型,通常是type1。
然后逐章解開注釋,編譯latex,查看生成pdf內字體類型,直到出現type3。
再於沒問題的上一章和有問題的這一章之間逐步注釋並編譯查看,直到定位到type3所在。
2)Linux
如果一個PDF文檔有多頁,你可以使用“-f”(首頁)和“-l”(末頁)選項來限制字體掃描頁面范圍。例如,如果你想要找出某個文檔中的5-10頁中使用了哪種字體,運行該命令 $ pdffonts -f 5-l 10 doc.pdf
二、Type3 文件的處理
1)整體處理
a)先考慮官方的建議,在文件頭部加入以下命令(T1包含在cm-super宏包中 [4])並重新編譯 [5]:
\usepackage[T1]{fontenc}
\usepackage{aecompl}
筆者的離線latex不支持這兩種包,會出現錯誤。
b)安裝cm-super宏包
Tex -> MikTex -> MikTex Package Manager -> 在name中尋找所需的包並安裝
問題依舊的話,應該是插圖中含有type3字體。 比如用Python或Matlab畫圖,默認的似乎就是輸出成type3 [5],那么往下看2)。
2)對已有圖片的處理
Python和Matlab生成的圖片字體,默認輸出就是Type3。有幾種可能的處理方法:
a) eps2eps [3][5]
eps2eps命令是包含在texlive發行版中的小工具,它能把一個eps圖片中字體全部曲線化,轉換后的eps再轉成pdf時,不帶任何字體信息。
所以我們可以將出問題的圖片(如果是eps格式)用eps2eps轉換一遍。
用法:Accessories -> Command Prompt 打開命令行,接着 eps2eps your.eps output.eps
但是,有人指出這樣圖片會變得不清晰;筆者這里是出現圖片會被部分截取的情況。
b) epstopdf, pdftops [5]
先轉成pdf再轉回eps, 比如對fig.eps, Accessories -> Command Prompt 打開命令行, 然后使用命令:
epstopdf fig.eps fig.pdf
pdftops -eps -r 400 fig.pdf fig.eps
筆者這邊是出現pdftops命令不兼容的情況。
c) convert-to-eps website
將問題圖片上傳至http://image.online-convert.com/convert-to-eps,下載下來也是eps,但字體也會被曲線化,從而使得圖片不再是type3。注意圖片會增大到數MB。
這個比較好使,多次解決了筆者的問題。
但其中有一次圖片實在太多,並且我們使用有編譯時間限制的在線latex,從而出現了超時問題。詳細解決方法和討論傳送門:http://www.cnblogs.com/zeedmood/p/8991821.html
三、Python的處理
比如用python畫圖,默認就是輸出成type3 [5]
修改 ~/.matplotlib/matplotlibrc
加入(或者修改)如下兩行
ps.fonttype : 42 # Output Type 3 (Type3) or Type 42 (TrueType)
pdf.fonttype : 42 # Output Type 3 (Type3) or Type 42 (TrueType)
四、Adobe Acrobat
Adobe Acrobat另存為的優化pdf格式,也可以用於去除Type 3 ,但最好設置下分辨率,避免圖的質量過分下降。可以改成以下設置:
Reference
[1] PostScript fonts https://en.wikipedia.org/wiki/PostScript_fonts#Type_3
[2] 請問Type3字體有什么特別? http://www.cnprint.org/bbs/thread/165/180556/
[3] origin作圖,避免里面有Type 3 字體 http://www.cnblogs.com/pankejia/p/3476432.html
[4] How to generate pdf without any Type3 fonts? http://tex.stackexchange.com/questions/18687/how-to-generate-pdf-without-any-type3-fonts
[5] 提交MNRAS的pdf文件中type3字體問題 http://asc.2dark.org/node/188
================================================================
Appendix II: True Type轉換為Type 1
某些會議(如 INFOCOM等使用EDAS系統的)還會要求將TRUE Type轉換為Type 1 或者要求全部字體都需要embedded。
The paper PDF file cannot be accepted: Publishers require that PDF fonts are embedded so that documents can be printed everywhere; one or more of your document fonts are not embedded
首先,定位問題:
下載Adobe Acrobat進行查看以及后續的嵌入 (注意!不是Abobe Reader!)
Adobe Acrobat 9.0的無需激活破解版比較好找,以下是雲盤鏈接:
http://pan.baidu.com/share/link?uk=1579679242&shareid=2902479474
https://www.panc.cc/s/[Acrobat.9.].APRO9_Win_ESD1_CS
安裝后,用Adobe Acrobat打開pdf,然后打開 文件-> 屬性,會看到沒有嵌入的字體
打開另存為->保存為pdf(優化)->設置
可以再次確認是沒有字體嵌入的
解決方法:
(1)True Type圖片將矢量圖轉換為位圖,去除文字
有些軟件的矢量圖,如Visio,其生成的圖片pdf就經常有True Type文字;
一個簡單的方法,就是定位到有True Type的圖片后(通常是矢量圖),將其轉換為位圖(如JPG、BMP),如果文章中格式有需要可以再轉換回pdf(當然,這樣依然是位圖)。為了保證放大后的清晰度,盡量選擇不要壓縮
Visio保存成JPG或者BMP就不是矢量圖了,沒有內嵌文字,自然也不會有True Type。JPG轉PDF可以用這個網站:http://jpg2pdf.com/
這個方法優點是簡單粗暴,而且每個圖基本都比較清晰
缺點是需要一個圖一個圖弄,而且圖中的文字無法搜索到
(2)使用Adobe Acrobat的打印功能,將True Type轉為Type 1
優點是一次通殺,不需要逐個去改;通常矢量圖也能保留
缺點是有些原本就是位圖的圖片,被打印后容易出現不清晰的情況
用Adobe Acrobat中打印,在高級-> PostScript選項中點開其 “將TRUE Type轉Type 1” 功能即可
可以看到新文檔已經沒有TRUE Type類型了
打開另存為->保存為pdf(優化)->設置
可以再次確認字體已經嵌入了