簡體   English   中英

將一系列.svg文件作為字形導入FontForge並輸出字體文件

[英]Import a sequence of .svg files into FontForge as glyphs and output a font file

我想創建一個具有大量字形的字體。 想想成千上萬的日本漢字。 因此肯定會有一些腳本/批處理需要。 幸運的是FontForge支持python腳本! 不幸的是,我無法讓它發揮作用。 [悲傷的臉]

首先,感謝用戶Hoff這里發布代碼這回答了我的問題的很大一部分。 但是在運行他的劇本時,我會遇到一些問題,這些問

Failed to find NameList: AGL For New Fonts
Warning: Font contained no glyphs

更新:

  • “字體不包含字形”錯誤顯然是FontForge中的一個錯誤,當字體包含一個或更少的字形時發生。 添加第二個字形'B'解決了這個問題。
  • 我發現無論是否保存.ttf .sfd .otf等都可以使用相同的語法。
  • NameList失敗實際上不會阻止寫入字體文件。 我很高興發現這一點,但仍然不明白如何提供它想要的NameList。

這是霍夫的代碼:

import fontforge
font = fontforge.open('blank.sfd')
glyph = font.createMappedChar('A')
glyph.importOutlines('sourceimg.svg')
font.generate('testfont.ttf')

經過五個小時的艱苦努力,建立了FontForge(Mac上一個令人困惑的過程)。 我似乎已經正常運行了。 我最初從.dmg安裝了一個預先構建的版本,但卻發現它缺少python支持。 但由於Hoff似乎沒有遇到我所做的同樣的錯誤,所以我不排除構建問題。

無論哪種方式,我都不理解涉及AGL的錯誤。 什么是AGL? 我查了一下 :“Adobe Glyph List - 標准的字形命名約定”。 聽起來像FontForge試圖將Unicode值映射到字形名稱而不能。

那么,為什么AGL NameList有問題呢? 在此先感謝您的幫助。

嘗試重建你的Fonforge。 因為代碼應該工作。 我測試了它,運行正常。

我用Homebrew成功安裝了Fontforge和Python擴展。 這是信息:

 allcaps$ brew info fontforge fontforge: stable 20120731, HEAD http://fontforge.org/ /usr/local/Cellar/fontforge/20120731 (377 files, 16M) * Built from source with: --with-x From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/fontforge.rb ==> Dependencies Required: gettext ✘, fontconfig ✔ Recommended: jpeg ✔, libtiff ✔ Optional: cairo ✔, pango ✘, libspiro ✘, czmq ✘ ==> Options --with-cairo Build with cairo support --with-czmq Build with czmq support --with-gif Build with GIF support --with-libspiro Build with libspiro support --with-pango Build with pango support --with-x Build with X11 support, including FontForge.app --without-jpeg Build without jpeg support --without-libpng Build without libpng support --without-libtiff Build without libtiff support --without-python Build without python support --HEAD install HEAD version ==> Caveats Set PYTHONPATH if you need Python to find the installed site-packages: export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH .app bundles were installed. Run `brew linkapps` to symlink these to /Applications. 

設置PYTHONPATH
運行brew install fontforge當然還有你需要的所有標志。
運行brew linkapps

UPDATE

以空字體開頭,因此字體不是問題:

import fontforge
font = fontforge.font() # create a new font

要包含一個字形表(不是必需的)下載: http ://partners.adobe.com/public/developer/en/opentype/glyphlist.txt然后:

import fontforge
fontforge.loadNamelist('glyphlist.txt') # load a name list
...

按代碼點創建字形。 createChar(uni[,name]) 'A'是65所以

char = font.createChar(65)

字形及其代碼點:

>>> for c in u'ABC 賢治':  print ord(c). 
>>> 65, 66, 67, 32, 36066, 27835. 

Unicode Consortium定義了Unicode標准。 “CJK統一表意文字”存在於“基本多語言平面(BMP)”中。

沒有unicode點的字形可以按名稱在字體中引用。 並且對於打開類型的功能或構建塊來組合新的字形非常有用。 您可以像這樣創建它們:

font.createChar(-1, 'some_name')

更新2

您應該按其AGL字形名稱命名Adobe Glyph List中出現的所有字形。 其余的字形應命名為uniXXXX ,其中XXXX是Unicode索引。 在開發過程中,您可以使用任何可讀的名稱。 因此,請在生成用於傳送的字體時使用您自己的命名並替換它。 見Typophile

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM