本文轉(zhuǎn)自B站,要查看更完整的文章內(nèi)容,請(qǐng)前往原文查看,傳送門:
https://www.bilibili.com/read/cv17495737
此文章為針對(duì)嗶哩嗶哩用戶「綿雲(yún)飴里」 于2022年7月10日所發(fā)布的文章 《貓啃網(wǎng)補(bǔ)字教程的問題?百度百科勘誤(暫)》而做出的回應(yīng),純粹是個(gè)人觀點(diǎn)與技術(shù)的探討,如果錯(cuò)誤之處敬請(qǐng)?jiān)彛?/span>
相對(duì)應(yīng)的教程文章請(qǐng)見 《設(shè)計(jì)師如何制作一套屬于自己字庫 手把手教你生成字庫教程》]

昨天心血來潮搜了下我的字體,發(fā)現(xiàn)貓啃網(wǎng)收錄了我源意明體那個(gè)缺字很多的舊版(我在元宵節(jié)已更新解決,現(xiàn)在支持的漢字字符甚至超過思源宋了)沒有更新,這么看應(yīng)該是網(wǎng)站編輯手動(dòng)錄入?看著例圖缺字感覺挺不好意思。而且我這源意體是有意不支持豎排的[https://www.github.com/MY1L/HanItalic/issues/2]所以豎排例圖很糟,不如刪去……要是編輯者能看到這行就好了。
貓啃君:其實(shí)之前放豎版的圖例,主要是為了方便用戶可以知道豎版的排版效果會(huì)是怎么樣的,無論有沒有處理好,只是讓用戶知道一下而已。至于用不用豎版的排版模式,讓用戶自己決定則可。
順帶一提,我未來還會(huì)制作開源款Garamond風(fēng)格的西文搭配源意明的字體「加拉蒙宋 (暫名)」,排版樣例如圖,支持不傾斜的Upright式意大利體西文:

然后順手點(diǎn)進(jìn)“手把手教你生成字庫教程”(http://atchat.cn/viewpoint/16091.html)
看了開頭,心里一涼:這個(gè)教程可能導(dǎo)致補(bǔ)字者功夫白費(fèi)。
貓啃君:很高興綿雲(yún)飴里能對(duì)貓啃網(wǎng)發(fā)表的這篇文章認(rèn)真地閱讀并提出寶貴的觀點(diǎn),所以貓啃君把綿雲(yún)飴里的這篇文章轉(zhuǎn)載到貓啃網(wǎng)上,并針對(duì)綿雲(yún)飴里提出的問題作出回應(yīng)與探討。
2次還是3次曲線?
標(biāo)題是“生成字庫”,不過正文是拿給 Dela Gothic One.ttf 補(bǔ)簡體字來舉例。可是,給現(xiàn)有字體補(bǔ)字和原創(chuàng)字體是不一樣的。
貓啃君:貓啃網(wǎng)寫《手把手教你生成字庫教程》這篇文章的初衷是讓不懂得使用字庫制作軟件的設(shè)計(jì)師更方便制作字體文件(即字庫)而撰寫的,所以無論是補(bǔ)字還是新造字體該教程都適用。
互聯(lián)網(wǎng)上已經(jīng)有許多繪制字形的教程,但是多為偏向設(shè)計(jì)標(biāo)準(zhǔn)字,極少有教程談及如何將字形封裝制作成可以使用的字體文件(字庫),另外就是撰寫文章時(shí),貓啃網(wǎng)的聊天群正在組織Dela Gothic One補(bǔ)字,所以為了方便編寫教程就直接使用貓啃補(bǔ)字的AI文件作為示例,也順便宣傳接下來的補(bǔ)字計(jì)劃。
另外,也會(huì)遇到有網(wǎng)友提問“我已經(jīng)畫好我的字了,但是我該怎樣把他弄成字體(文件)呢?”,寫該教程就是回答這個(gè)問題的。
不知為什么貓啃網(wǎng)要音譯成德拉黑體。我在貓啃網(wǎng)自帶的搜索框輸入“Dela”,提示404。如果網(wǎng)站運(yùn)營方看到這行,請(qǐng)修一下。
貓啃君:音譯成德拉黑體,是因?yàn)樵煮w名稱Dela Gothic中的Gothic在日語的語境中是黑體的意思,Dela則是音譯,所以中文字體名取為德拉黑體。在搜索框中輸入Dela提示404是因?yàn)檫@個(gè)搜索功能僅搜索文章的標(biāo)題,標(biāo)題中沒有Dela這個(gè)關(guān)鍵字的話會(huì)提示404的,由于貓啃君只是美工一枚,對(duì)于程序的東西不是太熟悉,后續(xù)想辦法修復(fù)這個(gè)問題。
第一個(gè)問題在.ttf,這字體只發(fā)布了2次曲線的版本。
雖然字體后綴名和它包含字形實(shí)際是幾次曲線無關(guān),不過一般.ttf是2次曲線,.otf是3次曲線。下文為了方便就這么稱呼了。
原創(chuàng)字體用Ai是可以的,不過我用的是開源的Inkscape,源文件直接就是.svg呢。
但補(bǔ)字……不應(yīng)該從字體源文件著手嗎?
貓啃君:補(bǔ)字理論上從源文件著手是最好的,但是并不是每個(gè)開源字體都會(huì)有筆劃分離的源文件,有些開源的字體只釋出ttf文件。
而另一個(gè)問題就是,有些設(shè)計(jì)師并不懂得使用字體制作軟件(比如貓啃君也不會(huì)用FontForge、FontCreator之類的軟件,只會(huì)用Illustrator),該教程只是給像貓啃君這類只會(huì)使用AI的人制作字庫提供一個(gè)解決方案而已。
DelaGothic是開源字體,作者放出了源文件,就在 Sources/DelaGothic.glyphs。其實(shí)我早就看見DelaGothic啦,但一直沒動(dòng)手補(bǔ)字,就因?yàn)槲覜]買Glyphs這軟件打不開.glyphs,因此寧愿憋著也不動(dòng)手。
其實(shí).glyphs是可以轉(zhuǎn)換成.ufo文件的:github.com/googlefonts/glyphsLib,需Python。
.ufo是很多造字軟件都支持的源文件,但我完全不懂大蟒所以轉(zhuǎn)不了。
但貓啃網(wǎng)應(yīng)該有懂Python的人,或者買了Glyphs的人——應(yīng)該罷?
貓啃君:DelaGothic的glyphs文件是@夜煞之樂讓朋友幫忙打開并導(dǎo)出的,而且@夜煞之樂也懂Python,所以如果綿雲(yún)飴里有興趣的話可以與@夜煞之樂交流交流。
如今字體設(shè)計(jì)師基本上只會(huì)用更好的3次曲線全程畫字體(Ai、Inks…),2次曲線可能只會(huì)出現(xiàn)在導(dǎo)出流程后。3次轉(zhuǎn)2次是有損步驟。
2次曲線與3次曲線差別有多大呢?以我開了源的字體「曺全碑隸」為例。




因此不能拿源文件3次導(dǎo)出ttf轉(zhuǎn)2次在Ai中打開轉(zhuǎn)3次這種經(jīng)歷兩遍有損步驟的字形修改(然后再導(dǎo)出ttf轉(zhuǎn)2次曲線,經(jīng)歷三遍有損?)如果原作者導(dǎo)出時(shí)還順帶合并了曲線,那就更萬劫不復(fù)了。

夜煞之樂:我并不清楚此處的重點(diǎn)是什么。如果按上下文理解為補(bǔ)字使用的源文件曲線格式,那么我覺得這個(gè)也還不是需要特別注意的問題。雖然三次轉(zhuǎn)二次再轉(zhuǎn)三次確實(shí)有會(huì)出現(xiàn)計(jì)算差異,但是在曲線算法足夠精準(zhǔn)的情況下,這個(gè)問題并不會(huì)造成太大影響,最多就是曲線會(huì)產(chǎn)生多余描點(diǎn)造成文件大小增加和改變曲線的曲率(如果您特別注意曲率的精準(zhǔn)度,您應(yīng)該直接使用字體設(shè)計(jì)軟件)。
對(duì)于新手而言,我覺得是在可以接受的范圍內(nèi)(畢竟如果補(bǔ)字的原字體只給二次曲線版本的話我們也沒辦法要求作者公開三次曲線,而且也可以暗示作者本身不一定追求完美曲線)。
我不確定貓啃君是否用了 DelaGothic.glyphs 生成了拆分筆畫的 .otf 再在Ai里打開,但這一步在補(bǔ)字教程里必須先說清。
夜煞之樂:如貓啃君所說,此教程為制作/生成字體文件(字庫),因此并不需要特別說明。但是既然已經(jīng)提出了問題,就解答一下疑問。我們?nèi)豪锩娌⑽从腥速徺I Glyphs,但是我在其他字體群里面詢問有 Mac/Glyphs的用戶,讓他們幫我把Dela Gothic One的 .glyphs 文件導(dǎo)出筆畫分離、三次曲線的 .otf 文件后分發(fā)給制作群人員。然而,并非每個(gè)開源字體都有筆畫分離版本或者使用三次曲線繪畫,所以在這里也不多做解釋。
至于為什么是請(qǐng)人導(dǎo)出而不是用其他方式是因?yàn)樵?.glyphs 文件使用了智能部件(Smart Components),雖然使用 FontLab 7 或者 Python 的 glyphs2ufo 庫都可以打開文件并導(dǎo)出筆畫分離、三次曲線的 .otf 文件,但是智能部件的變形轉(zhuǎn)換并無法保留,導(dǎo)致導(dǎo)出的字形部件比例不對(duì),無法使用。
UPM?
Units Per eM,單位每eM。這個(gè)eM原意是一個(gè)大約有“M”那么大的空間,放中文字體里差不多相當(dāng)于全角空格大小。UPM意思就是每個(gè)eM的長度里能放多少個(gè)坐標(biāo),字體里所有的尺寸皆以此為準(zhǔn):基線、上下行、邊界框、Caps高,x高,斜體角度……我曾經(jīng)通過僅修改upm無損放大了字形↘
見貓啃君說:“因?yàn)樽煮w是矢量的,所以在設(shè)計(jì)時(shí)的寬高并不會(huì)影響后續(xù)的導(dǎo)入?!?/p>
這句話乍看和“GIF是無損壓縮圖像格式,所以其它圖片轉(zhuǎn)GIF并不會(huì)影響畫面”一樣能成立,但都少條件:GIF的無損是256色以內(nèi);字體雖然一般是矢量的,但曲線上錨點(diǎn)只能放在整數(shù)坐標(biāo)(Unit,單位)上。
被導(dǎo)入矢量圖里的每個(gè)錨點(diǎn),凡沒有剛好在單位上的,都會(huì)被造字軟件在生成字體時(shí)挪動(dòng),也就是字形走樣了。相關(guān)案例可見2014年的知乎 zhihu.com/question/24635072
我去年在Q群里與Fitzgerald等人聊遍黑體進(jìn)度,談到“我不太同意名稱用‘gothic’,因?yàn)榻y(tǒng)一碼里Gothic「如????????」是個(gè)區(qū)段,如‘Noto Sans Gothic’這個(gè)字體……”,他傳來了最新版,當(dāng)我打開字體發(fā)現(xiàn)upm是256時(shí)也是心里一涼,擔(dān)憂地說:你們可能白做了。因?yàn)楸楹隗w補(bǔ)字用的思源黑upm是1000。
大多數(shù)otf字體都是1000 upm。
順帶一提,以前微軟出于性能考慮,建議ttf字體的upm是2的冪,這可能是遍黑體用256 upm的原因。當(dāng)然現(xiàn)在的字體設(shè)計(jì)師包括我都不理會(huì)微軟這建議。
可想而知,1000約舍到256意味著錨點(diǎn)全部重算了,而且挪移很嚴(yán)重,一些筆畫多的字形看得我直搖頭。我建議他從Adobe當(dāng)時(shí)放的可變思源黑源文件改起,“現(xiàn)在從零重做還來得及(指效率更高)”
因此,原創(chuàng)字體無所謂,哪怕upm設(shè)成10,只要矢量源文件還在就有救。但補(bǔ)字的入(粘貼參考字形)、出(導(dǎo)出自改字形)都必須按原字體的upm來。比如原字體upm是1000,就最好開個(gè)1000×1000單位的畫布——如果補(bǔ)的是漢字,且漢字呈正方形的話。其它情況酌情考慮,比如半角字形當(dāng)然可以1000×500,畫布也可以是upm值的整數(shù)倍,西文的話甚至還可以筆畫出頭呢。
夜煞之樂:教程已經(jīng)提及寬度高度可以按制作者需求設(shè)置。另外有兩點(diǎn):
一、曲線描點(diǎn)在Adobe Illustrator內(nèi)并不一定需要放在整數(shù)坐標(biāo)(以pixel為單位下可以調(diào)整兩位小數(shù));
二、OTF 字體文件可以接受到二位小數(shù)的單位坐標(biāo)(FontForge 允許 Round to hundredths)。在這兩個(gè)情況下,UPM的設(shè)定并不是非常重要的問題。
展開來說,從 Adobe Illustrator 導(dǎo)出字體成 SVG 時(shí),SVG 會(huì)保留原本有的小數(shù)數(shù)值,而 FontForge在導(dǎo)入時(shí)(教程提供的Python代碼里面使用glyph.importOutlines())會(huì)根據(jù) SVG viewbox調(diào)整大小,讓 viewbox 上下觸碰字體的 ascender/descender后放入字形(glyph)里面。代碼所保存的 .sfd(FontForge工程文件)也會(huì)保留兩位小數(shù)(寫的代碼并沒有四舍五入成整數(shù))。整套流程下來,曲線坐標(biāo)從 Adobe Illustrator 到 FontForge 都沒有出現(xiàn)偏差(除了導(dǎo)入SVG時(shí)自動(dòng)調(diào)整大小,但還是按小數(shù)計(jì)算)。這樣的情況下,我覺得UPM的參數(shù)設(shè)置完全并不會(huì)影響(雖然代碼默認(rèn)是按 1000 計(jì)算)。
而且,換算造成的“挪移嚴(yán)重”只會(huì)發(fā)生在UPM特別大差異的情況(如回應(yīng)提及的 1000 → 256),在大于UPM 500 的情況下因?yàn)樗纳嵛迦攵斐傻钠畈⒉粫?huì)特別明顯。如果制造者特別注意描點(diǎn)的精準(zhǔn)度,我們會(huì)建議直接使用字體設(shè)計(jì)軟件更好
需要特別注意多數(shù)軟件在導(dǎo)出最終的字體文件時(shí),還是會(huì)自動(dòng)把二次曲線的描點(diǎn)四舍五入,但是三次曲線的描點(diǎn)則不會(huì)四舍五入。下面鏈接示例的字體文件,OTF(三次曲線)的描點(diǎn)都有保留小數(shù)位,而TTF(二次曲線)的描點(diǎn)雖然多數(shù)已經(jīng)轉(zhuǎn)整,但是還是可見“O”里面的一個(gè)描點(diǎn)保留小數(shù)位。
點(diǎn)擊下載:https://maoken.com/other/DecimalO-Regular.zip
到此,我想不必解釋為何這2個(gè)問題都是地基級(jí)、一旦出問題補(bǔ)的字形要重做的地步。希望貓啃相關(guān)人員補(bǔ) DelaGothic 時(shí)別出地基問題??
夜煞之樂:如上所述,回應(yīng)文章所提及的兩個(gè)問題皆不是重大問題,我們現(xiàn)在的 Dela Gothic One補(bǔ)字計(jì)劃現(xiàn)在更注意的是新手設(shè)計(jì)師補(bǔ)字的品質(zhì)亟需后續(xù)調(diào)整。至于提及的生成字庫(封裝字體文件)的教程,我和貓啃會(huì)在必要部分(如畫板大?。┻M(jìn)行修改。
當(dāng)然,我現(xiàn)在還是不同意中文黑體名稱用“Gothic”。
夜煞之樂:抱歉讓您失望了,我們內(nèi)部團(tuán)隊(duì)目前已經(jīng)決定將 Dela Gothic One 補(bǔ)字的字體命名為 Unbounded Gothic (無界黑),其中 Gothic 保留原本的日文名稱意思(注意:Gothic 不一定是文章所代表的“哥特語”(日耳曼語族語言),也可以是歐洲使用的“哥特體”(另稱 blackletter 或 fraktur)或此處保留日文原意的“黑體”(另稱 sans-serif——中文字體叫 sans-serif其實(shí)也不是很正確))。
https://www.bilibili.com/read/cv17495737#reply121741384448
綿雲(yún)飴里又在評(píng)論區(qū)回應(yīng)了貓啃的回應(yīng)。
你,所以我只填韓文音節(jié)和字形?(我會(huì)讓其余的中國人填寫傳統(tǒng)的臺(tái)灣人部分。)