教程 特性變化
No.05 Feature Variations

使用特性變化 切換字形

本教程演示如何根據可變字型的變化例項(這裡是 Weight 字重軸),將單豎線的美元符號切換為帶斷條的備選設計。

教程式號: 05
官方原文: high-logic.com
內容狀態: ✅ 基於完整內容建立

簡介

可變字型允許您使用軸滑塊插值字形層輪廓。這是可能的,因為所有層都具有相容的輪廓,這意味著它們具有相同數量的輪廓和匹配的點,僅在點座標上有所不同。然而,如果您需要在設計空間內的特定範圍內切換到不相容的輪廓怎麼辦?例如,您可能希望為更窄或更粗的字形使用不同的字形設計。

問題

想象一個場景,您希望帶有單豎線的美元符號切換到帶有斷槓的替代設計,適用於更粗的字重(例如,當字重軸為 650 或更高時)。這就是 OpenType 的特性變化發揮作用的地方。

美元符號變化

解決方案:OpenType 特性變化

OpenType 規範透過特性變化表提供了一個優雅的解決方案,允許您將包含預設查詢集的特性替換為包含需要在特定條件下應用的查詢的替代特性。

有一個專門用於此的功能稱為必需變化替代(rvrn)。根據規範,rvrn 功能中的所有查詢必須是單一替換(GSUB 型別 1),這意味著不允許使用連字、上下文或 GPOS 查詢。然而,某些應用程式並未完全按照 OpenType 規範的意圖支援 rvrn,這可能會導致問題。

如果您使用 rvrn 的特性變化不起作用,您可以自由使用其他功能。我們建議嘗試必需連字(rlig)作為替代。此功能沒有與 rvrn 相同的限制,允許使用連字查詢。

在 FontCreator 中新增特性變化的分步指南

1. OpenType 設計器

  • 啟動 FontCreator。
  • 確保您的字型具有美元字形以及替代的 dollar.rvrn 字形。
  • 開啟 OpenType 設計器。

2. 建立新查詢

  • 在左側的功能樹檢視中選擇名為"查詢"的根項。
  • 單擊新增按鈕(頂部的綠色十字)。
  • 從右側的 GSUB 列表中選擇"單一替換"。
  • 將此查詢命名為"SingleSubstitution1"並將其配置為用替代字形替換常規美元符號。

3. 向 OpenType 佈局新增功能

  • 如果您的字型沒有指令碼,則首先選擇"指令碼"並單擊新增按鈕以新增"預設" -> "預設",否則您可以跳過此步驟。
  • 選擇名為"功能"的根項以新增名為"RequiredVariationAlternates1"的 `rvrn` 功能(將其留空,不新增查詢)。
  • 現在將該功能新增到所有可用的指令碼-語言組合。
  • 我們向"功能"新增第二個 `rvrn` 功能並將其命名為"RequiredVariationAlternates2"。
  • 將查詢"SingleSubstitution1"新增到"RequiredVariationAlternates2"。
OpenType 設計器

4. 將功能與變化條件連線

  • 在功能樹檢視中,選擇"變化"(最後一個根項)並單擊新增按鈕(頂部的綠色十字)。
  • 在變化條件部分,單擊新增按鈕並將軸設定為"字重",最小值設定為 650,最大值設定為 950。
  • 新增變化功能替換,將"RequiredVariationAlternates1"設定為功能來源,將"RequiredVariationAlternates2"設定為目標功能。
變化條件

這是完整的功能程式碼:

languagesystem DFLT dflt;
languagesystem latn dflt; # Latin default

lookup SingleSubstitution1 { # GSUB lookup type SingleSubstitution
   sub dollar by dollar.rvrn;
} SingleSubstitution1;

feature rvrn { # Required Variation Alternates
} rvrn;

conditionset ConditionSet1 {
   wght 650 950;
} ConditionSet1;

variation rvrn ConditionSet1 { # Required Variation Alternates
   lookup SingleSubstitution1;
} rvrn;

測試特性變化:

  • 透過在預覽區域中輸入美元符號來測試設定。
  • (可選)開啟校對對話方塊(左上角的第二個圖示)以檢視形狀引擎處理的內容。
  • 使用字重滑塊檢視當字重為 650 或更高時美元符號是否被替換。
  • 透過勾選 _shaper 核取方塊確保形狀引擎處於活動狀態。
測試特性變化

結論

透過此設定,您可以有效地管理字形在可變字型中不同軸位置的變化,確保您的設計在各種樣式和字重下保持最佳狀態。

致謝:本教程中使用的字型是 Elron Bucai 設計的 FtMonopol