OpenType 特性(二):上下文替換

2021-02-15 Glyphs 字體設計軟體

你肯定已經知道了如何在 InDesign 中打開上下文替代字。而且,你可能也聽說過有些字體用這一功能做出了非常酷的東西。本文就將介紹如何在你的字體裡也創建出這樣的功能。

我們要關注的特性是 calt(上下文變體)和 clig(上下文合字)。這兩者都通過 InDesign 中的「上下文替代字」開關來打開。




創建替代字符形

那麼,找一款你自己的字體,我們來在其中加入一個替代字符形。這個替代形式應該僅在特定情況下替換常規字符形。作為例子,我們選擇字母 j。

我想在這個例子中,當 j 位於字母 g 之後時,它的末端應該稍微收縮一點。所以我們通過「字符 > 添加字符形…」新建一個字符形。在彈出的文本框中輸入 j=j.alt 並點擊「生成」。這樣就會創建一個名為 j.alt 的字符形,其中帶有一個作為部件的 j。然後你可以在右鍵菜單中釋放部件,並調節末端長度。

你可以這樣在編輯視圖中「輸入」 j 的變體:按下 Cmd-F,在彈出窗口的搜索框中輸入j.alt。




編寫上下文替換規則

現在,我們需要編寫 calt 特性。按下 Cmd-I 打開「字體信息」,切換到「特性」選項卡。點擊加號按鈕創建新特性,新建的特性會保持名稱選定以便修改。我們將其命名為 calt。在上方的輸入框中,輸入:

如果一切正常,你的特性窗口將如圖所示:

在 sub 和 by 之間,時這一特性所查找的完整上下文內容。本例中,是 g 後接 j。但我們只想替換 j,而不是 g。所以我們在 j 後標記一個單直引號: j』。關鍵詞 by 後面的替換內容,j.alt,僅會對帶有單引號標記的字母生效,本例中即為 j。

我們來試一下特性是否有效。點擊「編譯」按鈕,然後在字體窗口中新建一個編輯選項卡,在左下角的「特性」菜單中選擇 calt 並輸入一個包含「gj」的單詞。




為替換規則添加分類

當我們的 j 位於 g 之後時,就會縮短尾巴——這是個不錯的注意。不過,如果前面是其他帶有下降部的字母,比如 q、y 或另一個 j 時,也應當如此。當然了,我們可以在 calt 特性中這樣寫:

sub g j' by j.alt;sub q j' by j.alt;sub y j' by j.alt;sub j j' by j.alt;

但是這就很繁瑣,尤其是之後如果想修改什麼內容的話。對於同樣的作用,這裡有一種更為有效的寫法:

sub [g j q y] j' by j.alt;

方括號會創建一個「類別」(class),其含義為「這些字母中的任何一個」。所以這個特性就是在說,「如果跟在 g、j、q 或 y 中的任何字母之後,就將 j 替換為 j.alt。」

在替換結果中也可以使用類別。你只需要確保兩個類別包含同等數量的內容,且順序一致。假如我們還有一個對應字母 ĵ 的 jcircumflex.alt,那麼特性代碼可以這樣:

sub [g j q y] [j jcircumflex]' by [j.alt jcircumflex.alt];

當你經常使用一個類別時,就不想一次次地反覆輸入整個類別。尤其是當你發現類別中漏掉了一個字符形,你就要全盤修改。有一個更好的辦法是,點擊加號按鈕並創建一個類別定義。你可以通過雙擊 xxxx 來對其進行重命名,和重命名特性標籤時的操作相同。類別名稱必須由大寫字母 A-Z 或小寫字母 a-z 開頭,也可包含下劃線 _、句點 . 和數字。名稱不限於四個字母長。我將這一類別命名為 descender_on_the_right,並在其中添加 gj q y:

現在,我們可以像這樣重寫 calt 特性:

sub @descender_on_the_right [j jcircumflex]' by [j.alt jcircumflex.alt];

@ 符號用於標記類別名稱。如果你不寫 @,Glyphs 會將其識別為字符形名稱並報錯。

就是這樣了。實際上,這還不是全部內容。在下一篇,OpenType 特性(三):上下文替換中,我們會更進一步,編寫高階的上下文特性代碼。

by Rainer Erich ScheichelbauerChinese translation by Willie Liu (劉育黎) from 3type (三言).

相關焦點

  • OpenType 特性(一):簡單替換
    特性可以實現兩件事:替換字符形和移動字符形。本篇教程中,我們會專注於「替換」。注意我說的是字符形而非字符。特性不會改變用戶輸入的文本(即「字符」),只能改變文本呈現的形態(即你在字體中所繪製的「字符形」)。閒言少敘,我們直接為字體創建一個特性。進入「字體信息」(Cmd-I)並切換到「特性」選項卡。看上去應該像這樣:
  • DDD - 識別限界上下文以及理解上下文映射
    倘若我們認可第 3-2 課中提及的三個原則或實踐:2PTs 規則、特性團隊、康威定律,則意味著項目經理需要將一個限界上下文要做的工作分配給大約 7~10 人的特性團隊。如此看來,對限界上下文的粒度識別就變成了對工作量的估算。我們並沒有嚴謹的算法去準確估算工作量,可是對於一個有經驗的項目經理(或者技術負責人),要進行工作量的大致估算,還是能夠辦到的。
  • Python--- 上下文管理器
    我們的第二段程序就使用了上下文管理器 (with...as...)。上下文管理器有隸屬於它的程序塊。當隸屬的程序塊執行結束的時候(也就是不再縮進),上下文管理器自動關閉了文件 (我們通過f.closed來查詢文件是否關閉)。我們相當於使用縮進規定了文件對象f的使用範圍。
  • Transformers 長程上下文綜述
    >Transformer-XL壓縮TransformersReformer尋覓式 Transformer密集多頭注意力的時間和空間複雜度多頭注意力對序列長度的伸縮性很差,原因有二:的作者得到了同樣的觀察,並指出雖然密集注意力允許每個頭關注完整的上下文,但許多注意力頭只關注局部上下文,而剩下的頭才會關注整個文本序列。 他們建議使用某種自注意力來利用這一現象,以此讓模型可以選擇其上下文尺寸。
  • A類雅思閱讀考點解析:詞與同義替換
    二、多變的同義替換考點   同義替換在雅思閱讀考點中為核心考點,幾乎所有題型都有考查對文中意思轉換與正確答案匹配的能力,因此同義替換所展示出來的並非是單單的同義或近義詞組的替換,還有詞組以及結構上的替換。
  • 雅思閱讀多變的同義替換考點解析
    (二)詞性的變化  詞性的變化是指用同一個單詞的不同形式來暗示答案的出處。  1. C5T2P2 _________become active too.  解析:只有三個單詞,去掉系動詞become和副詞too,只能拿active作為考點來去解題,根據句子結構來看,空格處缺少一個主語,同時要注意的是如果是可數名詞作主語的話,一般用複數。
  • 英語閱讀高分訓練使用上下文推出單詞的意思
    瀏覽器版本過低,暫不支持視頻播放閱讀理解中最重要的技能之一是能夠利用閱讀段落中的上下文線索來定義單詞。能夠使用上下文線索定義單詞的學生總體上具有較高的閱讀理解能力。存在幾種不同的技術來發現上下文中單詞的含義。查找同義詞和反義詞很多時候,不熟悉的單詞在同一句子中具有同義詞或反義詞。作者尤其在介紹難懂的詞彙時這樣做。如果詞彙詞在同一句子中具有同義詞或反義詞,則該詞通常用逗號隔開。具體請看視頻中的例子。
  • 考研英語高頻同義詞替換
    (一)考研英語高頻同義詞替換  1. think of 替換詞為occur  occur一詞可用在句式it/sth occurs to sb中,用來表示某人想起某事。  舉例:It occurred to me that someone had broken into my house.
  • 從零開始學自然語言處理(十二)——上下文無關文法
    在說上下文無關文法之前,我們來看看形式語言理論,什麼是形式語言理論?形式語言理論是用數學方法研究自然語言或者程序設計語言的理論。
  • 【有趣的 CSS 題目三】 層疊順序與堆棧上下文知多少
    【有趣的 CSS 題目一】 左邊豎條的實現方法【有趣的CSS題目二】從條紋邊框的實現談盒子模型所有題目匯總在我的 Github (https://github.com/chokcoco/iCSS/issues/1)。3、層疊順序(stacking level)與堆棧上下文(stacking context)知多少?
  • 高分替換詞?不存在的
    英語高分替代詞這類圖表傳遞出來的核心觀點是:寫作文用常見詞拿不了高分,要使用各種高級替換詞才能加分。但事實並非如此。很多中國學生寫作文的一個壞習慣是喜歡用各種看似高大上的詞來彰顯水平,而全然不顧這些詞使用的語境。
  • 深入理解CSS中的層疊上下文和層疊順序
    換句話說,頁面中的元素有了層疊上下文,就好比我們普通老百姓當了官,一旦當了官,相比普通老百姓而言,離皇帝更近了,對不對,就等同於網頁中元素級別更高,離我們用戶更近了。二、什麼是層疊水平再來說說層疊水平。「層疊水平」英文稱作」stacking level」,決定了同一個層疊上下文中元素在z軸上的顯示順序。
  • 搜狗輸入法「妙詞替換」等新功能上線
    夢想很美,現實也很美——搜狗手機輸入法推出的基於人工智慧技術的新功能:翻譯、妙詞替換、詩詞補全,就能滿足你的這些想像,讓你的輸入不止於你能想到的,讓表達溝通更簡單,聊天更顯從容和氣質。新推出的翻譯功能就實現了輸入法內即時翻譯。
  • 您不能錯過的 Safari 10.0 新特性
    Safari 10.0 隨之發布,帶來了不少新的特性,為開發者帶來福音。小編參照官方文檔,為大家整理翻譯,便於閱讀,麼麼噠。WebGL渲染上下文參數選項當超出這個限制閾值時,若繼續增加新的上下文會導致最早創建的上下文被銷毀。
  • 慎用替換詞,不然就……
    除此之外,一些同義詞之間的感情色彩也有不同,使用的時候要根據說話人的立場和態度,或者根據上下文來確定。最典型的一個例子是politician/statesman,兩者都能表示「從事政治活動的人」,但前者通常帶有貶義,表示「政客」,後者帶有褒義,表示「政治家」。
  • 雅思閱讀同義替換詞的考點
    下面新東方網雅思頻道為大家整理了雅思閱讀同義替換詞的考點,供考生們參考,以下是詳細內容。   雅思閱讀題目出題的本質是三種替換:同義詞/詞組替換,句型替換,語法替換,筆者將從這三方面根據學生在葉毅斌老師的雅思閱讀課堂中所做的筆記進行分類整理。
  • Python的with語句與上下文管理器詳解
    二、上下文管理器原理f 對象之所以會自動執行自己的close方法,是因為它是一個上下文管理器,所以我們要先說說什麼是上下文管理器。當然with...as...並非固定組合,單獨使用with...也是可以的,上下文管理器的__enter__方法還是正常執行,只是這個返回值並沒有賦給一個變量,with下面的代碼塊也不能使用這個返回值。
  • 有趣的Python上下文管理器
    可以像常規上下文管理器一樣使用上述類。將上下文管理器編寫為裝飾器 我們還可以將上下文管理器重寫為裝飾器。嵌套上下文管理器 上下文管理器可以進行嵌套,如下所示:上下文管理器擁有類似堆棧的邏輯,應按相反的順序退出。任何一個上下文管理器都可以處理異常,若此異常已經被某個管理器所處理,那麼其它的管理器將不會收到有關此異常的任何信息;因此,如果發生異常,諸多嵌套的上下文管理器的邏輯順序就成了運維的重要依據;而問題的另一方面,我們可以使用__exit__方法來引發異常,然後使用上下文管理器對其進行處理。
  • 貴州自考英語(二)替換課程說明
    貴州省高等教育自學考試的英語(二)課程,考生報名時在系統指定的課程中可選報三門進行替換,但所選課程不能是所考專業所含的必考課程,選考課程列表如下:>英語(二)替換選考科目01848公務員制度00107現代管理學00167勞動法00228環境與資源保護法00040
  • Vue3.0新特性
    Componsition API(API組合)ref 和 reactivecomputed 和watch新的生命周期函數自定義函數--hooks函數Teleport - 瞬移組件的位置Suspense - 異步加載組件的新福音全局API的修改和優化更多的誓言性特性