2016-08-31 39 views
0

當我運行一個最初由Linux上的LibreOffice創建的PDF時,通過OSX上的ghostscript 9.19來生成另一個(拼合)PDF,輸出完美,除了一個問題。奇怪的是,如果我突出顯示結果「連字符+空格」,我的上下文菜單顯示我已經選擇了一個emdash,所以在整個文檔中的所有emdashes都被替換爲一個標準連字符(笨拙地後跟一半空格)底層的文本仍然是一個模式,它只是渲染錯誤的字形。Ghostscript丟失了emdash字符並用連字符代替

我可以在同一個來源的多個文檔中重現這一點,我假設有一個設置或切換某處可以幫助解決這個問題。

我不知道使用的字體是否有所不同,但爲了參考起見,我的文檔的正文文本設置在Arno Pro中。當我在OS X上使用LibreOffice的一個現代版本來製作一個樣本文件,其中也包含Arno Pro中的emdash時,同樣的問題不會被展示出來,所以它似乎特定於最初製作這些PDF文件的軟件。

這些PDF是舊版項目,我目前沒有設置重新生成,所以我需要爲使用現有文件重新打印而準備它們。

如何在運行諸如以下命令時保留emdash字形?

gs -dSAFER -dBATCH -dNOPAUSE -dNOCACHE -sDEVICE=pdfwrite \ 
-sColorConversionStrategy=/LeaveColorUnchanged \ 
-dAutoFilterColorImages=true -dAutoFilterGrayImages=true \ 
-sOutputFile=output.pdf input.pdf 

,如果需要,我可以添加的輸入PDF的例子了這個問題。

+0

經過仔細研究後,我意識到它並不是渲染爲一個普通的連字符後跟一個空格,但它看起來更像是一個尾部或減號後跟一個空格。換句話說,短劃線佔據了應該佔據的區域的一半,而剩餘的一半距離是空白區域。 –

回答

1

沒有看到PDF文件,它是不可能給你一個答案。字體很可能沒有嵌入,或者嵌入的字體沒有emdash字形。

複製和粘貼使用ToUnicode CMap,因此它不依賴於字體。它只是使用給定字體時的字符代碼列表和與每個字符代碼關聯的Unicode代碼點。

請注意,這並不意味着'底層文本仍然是一個emdash'。 ToUnicode信息與事物的字體結尾完全分離,它實際上是元數據,並且與字體或渲染沒有真正的關係。

把文件放在DropBox上併發布URL,然後有人可以查看它。儘管如此,我將在未來幾天休假,但也許別人會看。

請注意,在PDF中,您不一定將字符和位置指定爲連續字符的列表;你可以指定每個單獨的位置,或者你可以指定覆蓋字體寬度的寬度等等。所以幾乎肯定只有一個字形,你所指的'空白'可能就是那個,空白,它的不是另一個字形。

我還應該指出(我做了很多)Ghostscript從不「平整」,連接,合併或任何類似的PDF文件操作。當使用Ghostscript和pdfwrite設備時,原始輸入(以任何格式)被完全解釋爲圖形標記操作,併發送到設備。該設備執行標記操作;在渲染設備的情況下,它將掃描轉換並寫入位圖。在pdfwrite的情況下,它創建PDF運算符。

這樣做的結果是輸出的PDF文件與輸入的PDF文件沒有關係,除了它的視覺外觀。

你也不會說你使用的是哪個版本的Ghostscript ....