[英]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
更新:
這是霍夫的代碼:
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
以空字體開頭,因此字體不是問題:
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')
您應該按其AGL字形名稱命名Adobe Glyph List中出現的所有字形。 其余的字形應命名為uniXXXX
,其中XXXX
是Unicode索引。 在開發過程中,您可以使用任何可讀的名稱。 因此,請在生成用於傳送的字體時使用您自己的命名並替換它。 見Typophile 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.