2015-09-26 162 views
1

我正在嘗試使用Fontforge腳本將.otf字體轉換爲.ttf字體(使用Postscript輪廓)。如何使用Fontforge腳本將.otf轉換爲.ttf(帶有Postscript輪廓)?

默認選項通過Truetype輪廓轉換爲.ttf。

如果有人能提供一些方向,我將不勝感激。

+0

查看我的答案,爲什麼你不能做你所問的事情(因爲你的目的不完整的OpenType知識),所以作爲建設性的問題:你爲什麼認爲你需要這樣做?你想解決哪個問題,你認爲你需要轉換字體?因爲[你應該問如何解決**那個**問題](http://meta.stackexchange.com/a/66378),而不是如何實現轉換。 –

回答

2

在OpenType字體是如何工作的快速教訓:有OpenType字體的兩種口味:OpenType字體與 - CFF-數據,和OpenType與 - TrueType的輪廓

  1. OpenType字體與CFF塊用2型「charstring類型「輪廓定義允許三次曲線建模。它們與Postscript類似,但在技術上不屬於Postscript。人們只是因爲歷史原因一直這樣稱呼它。
  2. 帶有TrueType表的OpenType字體使用TrueType輪廓定義,它只允許二次曲線建模。

    2018編輯:現在有兩個以上類型:OpenType字體與 - SVG-輪廓,這是一樣 「的SVG字體」,和OpenType與 - CFF2-輪廓,這是CFF的專門爲OpenType字體使用,而不是作爲一個嵌入無關的輪廓語言比)

這兩種輪廓模型是相互排斥的,大修所以你可以選擇哪一個你喜歡的,但不能兩者都在同一時間。現在,按照慣例,CFF-OT(和CFF2-OT)字體使用.otf擴展名,而TTF-OT(和SVG-OT)使用.ttf擴展名,但它們都只是OpenType字體,只不過在OpenType字體中有所不同。 CFF/TFF(/ CFF2/SVG)數據塊。因此,當我們談論otf字體時,我們確實是指「Postscript opentype font」(這是一個誤用詞,因爲CFF使用Type2語言,而不是PostScript語言),當我們談論ttf字體時,我們的意思是「TrueType opentype字體」。然而,要認識到的一個重要的事情是擴展沒有以任何方式定義的字體;只有它的內容。我們可以將字體重命名爲.gif擴展名,它仍然是內容指定的字體。因此,對於字體引擎而言,擴展名無所謂,就像圖像預覽器將愉快地打開.jpg文件即使它具有.png擴展名一樣。

詢問將按慣例是「postscript」字體(但又不是真的,它是Type2)的otf轉換爲ttf,按慣例它是「truetype」字體,因此不能包含「postscript」 (但仍然是Type2),並且要求ttf應該包含「postscript outline」,這並沒有任何意義:這就像要求如何將軟鉛筆轉換爲硬鉛筆一樣,但是軟鉛:你已經完成了,你在問如何創建你開始的東西。

帶「postscript」大綱的Opentype字體是otf

當然,你可以一個CFF字體轉換爲TrueType字體,但它是一個有損耗的轉換:它在數學上是不可能精確地轉換三次Bezier曲線(在類型2中使用)到二次貝塞爾曲線(在的TrueType使用) ,所以你最終會得到一個與原始字體近似的字體。

所以我的建議是:不要打擾。任何支持OpenType字體的引擎都支持CFF和TrueType,並且轉換爲.ttf將不會做任何有意義的事情,或者由於有損輪廓而導致字體大小(感知完美的轉換)或渲染字體與原始字體不正確轉換。

+0

感謝您的回答麥克。 我必須承認我對字體格式的工作原理有點困惑。 目前正在使用一個webfont生成器,我設法使用Fontforge將.OTF轉換爲.TTF,並使用ttautohint改進提示。 但是我被Fontsquirrel生成器弄糊塗了,它可能會生成一個帶有postscript輪廓的「假」.TTF。 (「專家模式」,「Truetype暗示」爲「保持存在」) 您的回答讓我明白,該文件並未真正轉換爲.TTF格式,但只是一個.OTF文件「重新標記」爲「假」 .TTF。 非常感謝您的幫助。 順便說一句,也謝謝你的PHP字體解析器 – Sept

+0

還有一種非常簡單的方法來查看字體是否在說謊它的擴展名:在文本編輯器,字節查看器或任何可以加載字體的文件中打開文件作爲「字節」,並檢查文件中的前四個字節是否讀取「OTTO」。作爲[OpenType規範的一部分](https://www.microsoft.com/typography/otspec/otff.htm),OT-TTF使用[00,01,00,00]作爲版本指示符,這看起來像「。」而OT-CFF使用字節[47,54,54,47],它們實際上是字母「OTTO」,所以如果你看到:那個擴展應該是'otf'而不是'ttf'當然是「應該」的意思) –

+0

作爲次要建議:只使用fontsquirrel來形成WOFF。原因是[一切只支持WOFF](http://caniuse.com/#search=woff),所以我們不需要任何其他格式。 WOFF是任何'otf'或'ttf'字體的無損封裝,所以你不會觸摸字體本身,你只是壓縮字體內的每個表格,在網絡上使用,並且由於所有的東西都支持它,所以我們不需要1〜2年前我們需要的'otf','ttf','eot'和'svg'等東西。 –

相關問題