CtrlOrdn:超橢圓風(fēng)豎排用可變字體,及??-??老傈僳文
制作新字體前得先考慮用途:目標(biāo)是否與現(xiàn)有的重復(fù)、不可替代。這次我想用一個字體解決一堆問題。

關(guān)于需求
起初參與漢化餅☆漫畫時,發(fā)覺現(xiàn)有英文※字體存在盲區(qū):沒有哪個會考慮到豎排用途——因?yàn)闀?0°旋轉(zhuǎn);而各種東亞字體里的全角區(qū)段又大多很敷衍,排出來就像 在 英 文 之 間 插 空 格 一 樣。所以迫切需要這樣一個字體:按漢字字面設(shè)計的全角大寫英文。
※本文的“英文”均指 基本拉?。蹵SCII 范圍內(nèi)的字符及對應(yīng)的全角字符。
首先日本字體廠商怎么做的呢?
森澤(morisawa)有套經(jīng)典的商業(yè)黑體:新ゴ(ShinGo),在日本使用率極高,即便你沒聽說過也很可能看過,其英文輪廓是圓角方形的,搭配漢字和規(guī)整的假名,全角部分也是,只是豎排時相比漢字窄很多。我想全角部分如果放寬到與漢字仿佛,應(yīng)該會適合豎排。

而這英文部分不完全是原創(chuàng),如果你看過許多經(jīng)典科幻電影,那么這些圓角方形的英文一定會讓你感到熟悉:


當(dāng)然這些字體都不免費(fèi)。而且也沒必要制作與它們一樣方的:我希望這個字體看起來像漢字撇捺筆畫那樣又圓又方,那么,不如用超橢圓風(fēng)格?
此處省略價值200萬的原研哉設(shè)計小米新標(biāo)志圖及當(dāng)時營銷號對超橢圓的營銷稿。準(zhǔn)確定義在網(wǎng)上有現(xiàn)成的科普,不是什么border-radius:19px;

雖然字體作不來百分百的超橢圓曲線(要較真的話,字體受限于upm也“作不來圓形”只是無限貼近圓嘛),但可做成貼近的“超橢圓風(fēng)”,字體名用O開頭,也方便大家選字體時直接看到這個超橢圓。

關(guān)于「Ordn」和OT特性
做CtrlOrdn之前,我還在考慮另一個需求:排序/排行榜數(shù)字。
為了對齊序號,宜用等寬數(shù)字或向右對齊,我以前有專欄介紹過等寬數(shù)字是一種可選的OpenType特性(略稱OT特性):

本字體已支持上述的 'pnum'、'tnum'、'zero'?等OT特性,但會遇到一個問題:排行榜第十名怎么辦。如果1與0等寬,這“10”就是2倍寬了。

這需要一點(diǎn)非常規(guī)的手段。我設(shè)計了一個沒有點(diǎn)的全角寬度連字“10”放在附圍字母數(shù)字區(qū)段的序號“⒑”里。為避免隨便輸入10也連字,設(shè)為必須開啟'ordn'(ordinal,OT序數(shù)特性)才會將全角10連字。這也是字體名CtrlOrdn的來源。


關(guān)于可變字體
上面幾個動圖展示了Ordn是字重可變的,其實(shí)字寬也可變,如我之前動態(tài)里的「?????」動圖演示,具有2個可變軸。
這是我第一個能發(fā)布的可變字體,所以關(guān)于“可變”方面我也是初學(xué)者。我電腦的低級系統(tǒng)甚至用不了可變字體,也不好介紹什么。原理相當(dāng)于Flash的補(bǔ)間:畫出多個極端值(軸),讓它們一一對應(yīng),自動生成中間任意的插值——也不一定限定中間,還可以外推,只是效果無法保證罷了。
做成可變的動機(jī)倒不是為了可變而是圖方便:我是想只要制作幾個極端字形就可以一勞永逸,生成字重、字寬精準(zhǔn)匹配其他東亞黑體的全角字形。如果不做多軸,那每個黑體都要重算然后重畫,完全是苦役。
顯然并沒有我想得那么一勞永逸:不能指望極端字形,還要畫出中間字形作為人工校正。除了字形一一對應(yīng),字形上看不見的度量也要一一對應(yīng),否則中插的字形就飛出去了。

關(guān)于??-??
我之前動態(tài)里的「?????」,用的是老傈僳文。去年(2020-9-4)我曾計劃制作支持老傈僳文的字體,現(xiàn)在成了也許是第一個完整支持老傈僳文的可變字體:
傈僳區(qū)段:U+A4D0~A4FF
傈僳補(bǔ)充區(qū)段:U+11FB0~11FBF ←Noto字體居然不支持……

該書寫系統(tǒng)看起來像無襯線體大寫拉丁文或其倒轉(zhuǎn)?(Turned)形式,比如傈僳寫作「??-??」。是否有人想問,為什么不用英文「LI-SU」代替?
請復(fù)制這個「????LISU」到文檔編輯器,1.試試大寫轉(zhuǎn)小寫功能lisu,2.試試改成襯線體或斜體????????。

老傈僳文奇妙在限定了字體(詳見我去年2020-9-4的動態(tài))。統(tǒng)一碼給每個字符配了屬性,而文檔編輯器的大寫轉(zhuǎn)小寫功能是遵循這個屬性轉(zhuǎn)換的。如果將老傈僳文合并給拉丁,會帶來很多麻煩,首先一般人類就無法分清「LI?SU」這孤零零一個詞究竟是英文人名“李肅”還是老傈僳文,軟件就更不能了:難道編輯器還要自帶AI嗎。
畢竟,編碼應(yīng)該是為了給如實(shí)記錄和傳播帶來方便的。如果記作「LI?SU」那么傳遞或處理時沒法避免走樣。
因此將老傈僳文當(dāng)作一種“只是看上去很像拉丁而已”的文字單獨(dú)分配區(qū)段處理起來還比較方便,類似于切羅基文。


字體已發(fā)布在[ github.com/MY1L/Ctrl#ordn?]
每字體包含幾百個字形,對應(yīng)四百以上個字符,今后也會在這鏈接更新↑