Fuchsia.fonts

新增日期:7

通訊協定

FontSetEventListener

定義於 fuchsia.fonts/events.fidl

用於監聽 Provider 字型組中可能事件的通訊協定。

使用 fuchsia.fonts/Provider.RegisterFontSetEventListener 註冊事件監聽器。

OnFontSetUpdated

Provider 中可用的字型組合已變更。請參閱 fuchsia.fonts/FontSetUpdatedEvent

要求

名稱類型
event FontSetUpdatedEvent

回應

<EMPTY>

供應商

定義於 fuchsia.fonts/font_provider.fidl

數位字型檔案和中繼資料的提供者。

TODO(https://fxbug.dev/42170326):移除已淘汰的方法並移至 provider.fidl。

GetFamilyInfo

已淘汰,查看《GetFontFamilyInfo》。

傳回指定字型系列的資訊;如果沒有指定名稱的系列,則傳回空值。這個函式會遵循系列名稱的別名並忽略大小寫,因此針對「robotoSLAB」要求會傳回「Roboto Slab」的 FamilyInfo。

要求

名稱類型
family string[128]

回應

名稱類型
family_info FamilyInfo?

GetFont

已淘汰,查看《GetTypeface》。

傳回符合指定 request 的字型。

要求

名稱類型
request Request

回應

名稱類型
response Response?

GetFontFamilyInfo

傳回指定字型系列的資訊;如果沒有指定名稱的系列,則傳回空白資料表。

這個函式會遵循系列名稱別名並忽略大小寫。例如「RobotoSlab」是正規名稱「Roboto Slab」的別名。由於區分大小寫和別名的解析,針對「robotoSLAB」的要求會傳回「Roboto Slab」的 FontFamilyInfo

要求

名稱類型
family FamilyName

回應

名稱類型
family_info FontFamilyInfo

GetTypeface

傳回符合指定 request 的字體;如果找不到相符的介面,則會傳回空白資料表。(如果使用 TypefaceRequestFlags.EXACT_FAMILY 來停用備用功能,則較有可能發生後者)。

要求

名稱類型
request TypefaceRequest

回應

名稱類型
response TypefaceResponse

RegisterFontSetEventListener

註冊事件監聽器,即可在可用字型或對應組合變更時收到通知。用戶端可以註冊任意數量的事件監聽器。

如要取消註冊,請關閉管道。

要求

名稱類型
listener FontSetEventListener

回應

<EMPTY>

結構化

FamilyInfo

定義於 fuchsia.fonts/font_provider.fidl

已淘汰,查看《FontFamilyInfo》。

關於可以使用 GetFamilyInfo() 要求的字型系列資訊。

欄位類型說明預設
name string[128]

標準字型系列名稱。請注意,這可能與傳送至 GetFamilyInfo() 的值不同,因為 GetFamilyInfo() 也會解析字型別名並忽略大小寫。例如 GetFamilyInfo("robotoslab") 將 FamilyInfo.name = "Robot Slab"。

無預設
styles vector<Style>[300]

未排序的清單,內含系列中所有可用樣式。

無預設

FamilyName

定義於 fuchsia.fonts/provider.fidl

系列字型的名稱。

例如:「Roboto」、「Noto Serif」。

欄位類型說明預設
name string[128]

名稱的組成字元。

無預設

要求

定義於 fuchsia.fonts/font_provider.fidl

已淘汰,查看《FaceRequest》。

欄位類型說明預設
family string[128]?

所需字型系列名稱,例如「Roboto」。字型系列搜尋則不區分大小寫。如果沒有指定係列,或指定的系列沒有要求的 character 字符,則系統可能會傳回其他系列的字型。您可以使用 REQUEST_FLAG_NO_FALLBACK 停用這個行為。

無預設
weight uint32

舉例來說,400 為正常值,700 則為粗體。

400
width uint32

符合 OS/2 和 Windows Metrics usWidthClass 表格的數值。https://www.microsoft.com/typography/otspec/os2.htm 例如,5 是正常現象。

5
slant Slant Slant.UPRIGHT
language vector<string>[8]?

依偏好順序 BCP47 語言標記。請參閱 https://tools.ietf.org/html/bcp47。

無預設
character uint32

必須出現在傳回的字型中或 0 中的字元碼點。指定這個欄位的呼叫端應從結果中擷取字元集並快取,以免呼叫超過不必要的 API。

0
fallback_group FallbackGroup

備用群組偏好設定。來電者可將這個欄位保留設為「無」。在這種情況下,字型供應程式會使用指定字型系列的備用群組。

FallbackGroup.NONE
flags uint32 0

回應資源

定義於 fuchsia.fonts/font_provider.fidl

欄位類型說明預設
buffer fuchsia.mem/Buffer 無預設
buffer_id uint32

緩衝區的緩衝區 ID。具有相同 buffer_id 的回應在緩衝區中納入相同資料。用戶端可能會使用這個值來偵測是否已在剖析表單中快取字型。

無預設
font_index uint32

buffer 中的字型索引。用於每個檔案可能包含多種字型的字型格式,例如 TTC (TrueType 集合)。

無預設

樣式

定義於 fuchsia.fonts/font_provider.fidl

已淘汰,查看《Style2》。

欄位類型說明預設
weight uint32 無預設
width uint32 無預設
slant Slant 無預設

ENUMS

CacheMissPolicy 嚴格

類型:uint32

定義於 fuchsia.fonts/provider.fidl

針對用戶端要求尚未快取的字體時,字型伺服器應執行的動作選項。

名稱說明
1

伺服器會在提供回應前,嘗試載入未快取的字體。此為預設行為。

我們不建議在等待字型的同時封鎖轉譯的同步用戶端。

2

伺服器會傳回空白 fuchsia.fonts/TypefaceResponse,藉此告知用戶端無法使用未快取的字體。未快取的字體可能會以非同步方式下載,以供日後的要求使用。

這與 CSS 中的 font-display: block 類似。

3

伺服器會嘗試提供快取備用字體 (如果 fuchsia.fonts/TypefaceRequestFlags 中的備用限制允許的話)。未快取的字體可能會以非同步方式下載,供日後要求使用。

這與 CSS 中的 font-display: swap 類似。

FallbackGroup 嚴格

類型:uint32

定義於 fuchsia.fonts/font_provider.fidl

已淘汰,查看《GenericFontFamily》。

名稱說明
0
1
2
3
4
5

GenericFontFamily 嚴格

類型:uint32

fuchsia.fonts/styles.fidl 定義

通用字型系列,可以做為特定係列的備用系列。

每個字型系列都屬於部分「一般」字型系列 (請見以下範例)。

如果無法取得確實要求的系列,但要求中指定了備用群組,供應器可能會傳回備用群組的其他系列。舉例來說,如果用戶端請求了有 SANS_SERIF 備用的「CSP」系列,但「CSP」無法使用,供應商可能會改為傳回其他可用的 Sans Serif 系列,例如「Roboto Regular」。

另請參閱: https://www.w3.org/TR/css-fonts-4/#generic-font-families

名稱說明
1

大部分筆劃的結尾處都有一些小幅「Serif」、「勾」或「凹口」。 範例:喬治亞州、Noto Serif、Times New Roman。

2

多數筆劃結尾沒有襯線的字符。例如:SITE、Noto Sans、Roboto、Tahoma。

3

固定寬度字型。例如:Consolas、Courier New、Inconsolata。

4

手寫或草寫字型。 例如:筆刷腳本、Comic Sans、Lucida Calligraphy。

5

裝飾字型。例如:撞擊、Papyrus。

6

目標平台的預設使用者介面字型。為提供完整 CSS 規格的資訊,系統會納入此屬性;字型資訊清單不應宣告字型屬於 SYSTEM_UI 一般系列,而是應宣告更具體的選項 (例如 Roboto 的 SERIF)。

不常使用。

7

專門用於轉譯表情符號碼點的字型。例:Noto 彩色表情符號。

8

主要用於算繪數學運算式的字型。

不常使用。

9

一組 Serif 和草寫之間的中文字型,通常用於中國官方文件。

不常使用。

傾斜嚴格

類型:uint32

fuchsia.fonts/styles.fidl 定義

型臉的斜邊類型。

名稱說明
1

預設為直立字符。

2

特別設計、傾斜和稍微用字符的字符。

3

字符歪斜。傾斜度通常是指直立變體的幾何轉換,而不是自訂設計的變化版本。

寬度嚴格

類型:uint32

fuchsia.fonts/styles.fidl 定義

字符的水平寬度類別。

請參閱 https://docs.microsoft.com/en-us/typography/opentype/spec/os2#uswidthclass。

名稱說明
1

正常寬度的 50%

2

正常寬度的 62.5%

3

正常寬度的 75%

4

正常寬度的 87.5%

5

正常寬度

6

一般寬度的 112.5%

7

正常寬度的 125%

8

正常寬度的 150%

9

正常寬度的 200%

資料表

FontFamilyInfo

定義於 fuchsia.fonts/provider.fidl

使用 Provider.GetFontFamilyInfo() 要求的字型系列相關資訊。

如果找不到相符的字型系列,表格就會空白。

序數欄位類型說明
name FamilyName

標準字型系列名稱。請注意,這可能與傳遞至 GetFontFamilyInfo() 的值不同,因為字型別名的解析度及/或空白字元和大小寫的差異。

styles vector<Style2>[300]

未排序的清單,內含系列中所有可用樣式。

FontSetUpdatedEvent

定義於 fuchsia.fonts/events.fidl

表示 Provider 中可用字型組合的事件已變更。這通常是因為下載及快取臨時字型所致。用戶端應考慮重新要求字型,並重新轉譯任何顯示的文字。

序數欄位類型說明

Style2

fuchsia.fonts/styles.fidl 定義

可在要求或描述類型錶面時使用的樣式屬性。

序數欄位類型說明
slant Slant

查看《Slant》。

weight Weight

字符的重量或粗細。允許的值是 [1, 1000] 範圍內的整數,但大多數實際字型系列僅支援某些 100 的整數倍數:{100, 200, ..., 900}。一般文字 (WEIGHT_NORMAL) 為 400,WEIGHT_BOLD 為 700。

詳情請參閱: https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight#Common_weight_name_mapping https://docs.microsoft.com/en-us/typography/opentype/spec/os2#usweightclass

width Width

查看《Width》。

TypefaceQuery

定義於 fuchsia.fonts/provider.fidl

用於查詢字體的參數。

序數欄位類型說明
family FamilyName

所需字型系列名稱,例如「Roboto」。字型系列搜尋不區分大小寫。

注意:如果指定的系列不存在,或是指定的系列沒有所要求 code_point 的字符,系統可能會傳回其他系列的臉孔。您可以使用 TypefaceRequestFlags.EXACT_FAMILY 停用這個行為。

style Style2

所需字體的樣式屬性。

languages vector<fuchsia.intl/LocaleId>[8]

按照偏好順序排列語言標記。如此一來,您就能區分對應至不同語言 (例如 CJK 碼點) 的碼點。

查看《fuchsia.intl.LocaleId》。

code_points vector<uint32>[128]

選用的碼點必須存在於傳回的臉孔中。

指定這個欄位的呼叫端應從結果中擷取字元集並快取,以免重複呼叫 API。

fallback_family GenericFontFamily

如果無法完全相符或不含要求的碼點,就會改回使用一般字型系列。

每個字型系列都屬於泛型系列 (在字型資訊清單中設定)。如果特定字型系列未包含要求的程式碼點,供應程式可以將「同通用系列」中其他字型系列的碼點搜尋為備用項目。

在查詢中指定 fallback_family,可讓用戶端覆寫用做備用的一般系列。

postscript_name string[63]

要查詢的字體的確切 Postscript 名稱。此值與 TrueType/OpenType name 資料表中的名稱 ID 6 對應。

所有字元都必須在可列印的 ASCII 範圍 (U+0021 到 U+007E) 範圍內,且不得為 [[', ']'、'(', ')'、'{'、'}'、'<'、'>'、'/' 或 '%'。

如果指定這個欄位,系統會忽略所有其他查詢欄位。

full_name string[128]

要查詢的字體的確切全名。此值與 TrueType/OpenType name 資料表中的名稱 ID 4 對應。

如果指定這個欄位,系統會忽略所有其他查詢欄位。

TypefaceRequest

定義於 fuchsia.fonts/provider.fidl

用於要求字體的參數。

序數欄位類型說明
query TypefaceQuery

用於查詢字體的參數。

flags TypefaceRequestFlags

如何處理請求的旗標,例如允許哪些類型的替代程式碼。

cache_miss_policy CacheMissPolicy

設定當要求的字體存在但未快取,因此無法立即提供時要執行的動作。

如果這個欄位空白,預設政策為 fuchsia.fonts/CacheMissPolicy.BLOCK_UNTIL_DOWNLOADED

如果用戶端需要立即回應,可以選擇其中一項非封鎖政策。在此情況下,用戶端也可以呼叫 fuchsia.fonts/Provider.RegisterFontSetEventListener,以便在新字型加入快取時收到通知。

TypefaceResponse 資源

定義於 fuchsia.fonts/provider.fidl

回應 TypefaceRequest。包含與傳回的字體對應的數位字型檔案和中繼資料。如果客戶打算重複使用結果,則應快取結果。

如果找不到相符的字體,該資料表會留空。

序數欄位類型說明
buffer fuchsia.mem/Buffer

包含數位字型檔案位元組的記憶體緩衝區。 用戶端有責任識別檔案類型並進行剖析 (通常是委派為 FreeType 或類似的程式庫)。

buffer_id uint32

緩衝區的 ID。具有相同 buffer_id 的回應保證會在緩衝區中包含相同資料。用戶端可能會使用這個值來偵測是否已有剖析表單中的快取字型。

font_index uint32

buffer 內所傳回字體的索引。用於數位字型格式;每個檔案可能包含多個字體,例如 TTC (TrueType 集合)。

帳單

TypefaceRequestFlags 嚴格

類型:uint32

定義於 fuchsia.fonts/provider.fidl

TypefaceRequest 的布林值旗標。

名稱說明
1

停用字型系列備用廣告。如果要求的字型系列不存在,或未包含所要求的程式碼點,服務就不會嘗試搜尋備用字型集。

2

停用近似樣式比對。服務只會傳回完全符合要求樣式的臉孔。例如,要求的「半粗體」粗細不會替代「medium」,而要求的「斜體」斜體則不會替代「oblique」。

業者

名稱類型說明
DEFAULT_SLANT

未指定時字體的預設斜體。

DEFAULT_WEIGHT WEIGHT_NORMAL uint16

未指定字體時的預設粗細。

DEFAULT_WIDTH

未指定字體時的預設寬度。

MAX_FACE_QUERY_CODE_POINTS 128 uint32

字型查詢中允許的碼點數量上限。

MAX_FACE_QUERY_LANGUAGES 8 uint32

字體查詢中允許的偏好語言數量上限。

MAX_FAMILY_NAME_LENGTH 128 uint32

字型系列名稱的長度上限。

MAX_FAMILY_STYLES 300 uint32

字型系列傳回的樣式數量上限。

MAX_POSTSCRIPT_TYPEFACE_NAME_LENGTH 63 uint32

字體排版名稱的長度上限。這項限制來自 OpenType name 資料表規格。

MAX_TYPEFACE_NAME_LENGTH 128 uint32

字體全名的長度上限。

REQUEST_FLAG_EXACT_MATCH 2 uint32

已淘汰,請參閱 FaceRequestFlags。停用近似樣式比對。服務只會傳回完全符合要求樣式的字型。

REQUEST_FLAG_NO_FALLBACK 1 uint32

已淘汰,請參閱 FaceRequestFlags。停用備用字型。如果沒有要求的字型系列或不含要求的字元,服務就不會嘗試搜尋備用字型集。

WEIGHT_BLACK 900 uint16
WEIGHT_BOLD 700 uint16
WEIGHT_EXTRA_BOLD 800 uint16
WEIGHT_EXTRA_LIGHT 200 uint16
WEIGHT_LIGHT 300 uint16
WEIGHT_MEDIUM 500 uint16
WEIGHT_NORMAL 400 uint16
WEIGHT_SEMI_BOLD 600 uint16
WEIGHT_THIN 100 uint16

別名

名稱說明
重量 uint16