通訊協定
FontSetEventListener
用於監聽 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」。字型系列搜尋則不區分大小寫。如果沒有指定係列,或指定的系列沒有要求的 |
無預設 |
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
|
|
無預設 |
樣式
定義於 fuchsia.fonts/font_provider.fidl
已淘汰,查看《Style2
》。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
weight |
uint32
|
無預設 | |
width |
uint32
|
無預設 | |
slant |
Slant
|
無預設 |
ENUMS
CacheMissPolicy 嚴格
類型:uint32
定義於 fuchsia.fonts/provider.fidl
針對用戶端要求尚未快取的字體時,字型伺服器應執行的動作選項。
名稱 | 值 | 說明 |
---|---|---|
BLOCK_UNTIL_DOWNLOADED |
1 |
伺服器會在提供回應前,嘗試載入未快取的字體。此為預設行為。 我們不建議在等待字型的同時封鎖轉譯的同步用戶端。 |
RETURN_EMPTY_RESPONSE |
2 |
伺服器會傳回空白 fuchsia.fonts/TypefaceResponse,藉此告知用戶端無法使用未快取的字體。未快取的字體可能會以非同步方式下載,以供日後的要求使用。 這與 CSS 中的 |
RETURN_FALLBACK |
3 |
伺服器會嘗試提供快取備用字體 (如果 fuchsia.fonts/TypefaceRequestFlags 中的備用限制允許的話)。未快取的字體可能會以非同步方式下載,供日後要求使用。 這與 CSS 中的 |
FallbackGroup 嚴格
類型:uint32
定義於 fuchsia.fonts/font_provider.fidl
已淘汰,查看《GenericFontFamily
》。
名稱 | 值 | 說明 |
---|---|---|
NONE |
0 |
|
SERIF |
1 |
|
SANS_SERIF |
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
名稱 | 值 | 說明 |
---|---|---|
SERIF |
1 |
大部分筆劃的結尾處都有一些小幅「Serif」、「勾」或「凹口」。 範例:喬治亞州、Noto Serif、Times New Roman。 |
SANS_SERIF |
2 |
多數筆劃結尾沒有襯線的字符。例如:SITE、Noto Sans、Roboto、Tahoma。 |
太空 |
3 |
固定寬度字型。例如:Consolas、Courier New、Inconsolata。 |
方塊 |
4 |
手寫或草寫字型。 例如:筆刷腳本、Comic Sans、Lucida Calligraphy。 |
奇幻 |
5 |
裝飾字型。例如:撞擊、Papyrus。 |
SYSTEM_UI |
6 |
目標平台的預設使用者介面字型。為提供完整 CSS 規格的資訊,系統會納入此屬性;字型資訊清單不應宣告字型屬於 不常使用。 |
表情符號 |
7 |
專門用於轉譯表情符號碼點的字型。例:Noto 彩色表情符號。 |
MATH |
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。
名稱 | 值 | 說明 |
---|---|---|
ULTRA_CONDENSED |
1 |
正常寬度的 50% |
EXTRA_CONDENSED |
2 |
正常寬度的 62.5% |
概略說明 |
3 |
正常寬度的 75% |
SEMI_CONDENSED |
4 |
正常寬度的 87.5% |
NORMAL |
5 |
正常寬度 |
SEMI_EXPANDED |
6 |
一般寬度的 112.5% |
已展開 |
7 |
正常寬度的 125% |
EXTRA_EXPANDED |
8 |
正常寬度的 150% |
ULTRA_EXPANDED |
9 |
正常寬度的 200% |
資料表
FontFamilyInfo
定義於 fuchsia.fonts/provider.fidl
使用 Provider.GetFontFamilyInfo()
要求的字型系列相關資訊。
如果找不到相符的字型系列,表格就會空白。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
name |
FamilyName
|
標準字型系列名稱。請注意,這可能與傳遞至 |
2 |
styles |
vector<Style2>[300]
|
未排序的清單,內含系列中所有可用樣式。 |
FontSetUpdatedEvent
表示 Provider
中可用字型組合的事件已變更。這通常是因為下載及快取臨時字型所致。用戶端應考慮重新要求字型,並重新轉譯任何顯示的文字。
序數 | 欄位 | 類型 | 說明 |
---|
Style2
如 fuchsia.fonts/styles.fidl 定義
可在要求或描述類型錶面時使用的樣式屬性。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
slant |
Slant
|
查看《 |
2 |
weight |
Weight
|
字符的重量或粗細。允許的值是 [1, 1000] 範圍內的整數,但大多數實際字型系列僅支援某些 100 的整數倍數:{100, 200, ..., 900}。一般文字 ( 詳情請參閱: 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 |
3 |
width |
Width
|
查看《 |
TypefaceQuery
定義於 fuchsia.fonts/provider.fidl
用於查詢字體的參數。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
family |
FamilyName
|
所需字型系列名稱,例如「Roboto」。字型系列搜尋不區分大小寫。 注意:如果指定的系列不存在,或是指定的系列沒有所要求 |
2 |
style |
Style2
|
所需字體的樣式屬性。 |
3 |
languages |
vector<fuchsia.intl/LocaleId>[8]
|
按照偏好順序排列語言標記。如此一來,您就能區分對應至不同語言 (例如 CJK 碼點) 的碼點。 查看《 |
4 |
code_points |
vector<uint32>[128]
|
選用的碼點必須存在於傳回的臉孔中。 指定這個欄位的呼叫端應從結果中擷取字元集並快取,以免重複呼叫 API。 |
5 |
fallback_family |
GenericFontFamily
|
如果無法完全相符或不含要求的碼點,就會改回使用一般字型系列。 每個字型系列都屬於泛型系列 (在字型資訊清單中設定)。如果特定字型系列未包含要求的程式碼點,供應程式可以將「同通用系列」中其他字型系列的碼點搜尋為備用項目。 在查詢中指定 |
6 |
postscript_name |
string[63]
|
要查詢的字體的確切 Postscript 名稱。此值與 TrueType/OpenType 所有字元都必須在可列印的 ASCII 範圍 (U+0021 到 U+007E) 範圍內,且不得為 [[', ']'、'(', ')'、'{'、'}'、'<'、'>'、'/' 或 '%'。 如果指定這個欄位,系統會忽略所有其他查詢欄位。 |
7 |
full_name |
string[128]
|
要查詢的字體的確切全名。此值與 TrueType/OpenType 如果指定這個欄位,系統會忽略所有其他查詢欄位。 |
TypefaceRequest
定義於 fuchsia.fonts/provider.fidl
用於要求字體的參數。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
query |
TypefaceQuery
|
用於查詢字體的參數。 |
2 |
flags |
TypefaceRequestFlags
|
如何處理請求的旗標,例如允許哪些類型的替代程式碼。 |
3 |
cache_miss_policy |
CacheMissPolicy
|
設定當要求的字體存在但未快取,因此無法立即提供時要執行的動作。 如果這個欄位空白,預設政策為 fuchsia.fonts/CacheMissPolicy.BLOCK_UNTIL_DOWNLOADED。 如果用戶端需要立即回應,可以選擇其中一項非封鎖政策。在此情況下,用戶端也可以呼叫 fuchsia.fonts/Provider.RegisterFontSetEventListener,以便在新字型加入快取時收到通知。 |
TypefaceResponse 資源
定義於 fuchsia.fonts/provider.fidl
回應 TypefaceRequest。包含與傳回的字體對應的數位字型檔案和中繼資料。如果客戶打算重複使用結果,則應快取結果。
如果找不到相符的字體,該資料表會留空。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
buffer |
fuchsia.mem/Buffer
|
包含數位字型檔案位元組的記憶體緩衝區。 用戶端有責任識別檔案類型並進行剖析 (通常是委派為 FreeType 或類似的程式庫)。 |
2 |
buffer_id |
uint32
|
緩衝區的 ID。具有相同 |
3 |
font_index |
uint32
|
|
帳單
TypefaceRequestFlags 嚴格
類型:uint32
定義於 fuchsia.fonts/provider.fidl
TypefaceRequest
的布林值旗標。
名稱 | 值 | 說明 |
---|---|---|
EXACT_FAMILY |
1 | 停用字型系列備用廣告。如果要求的字型系列不存在,或未包含所要求的程式碼點,服務就不會嘗試搜尋備用字型集。 |
EXACT_STYLE |
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 |
MAX_TYPEFACE_NAME_LENGTH |
128
|
uint32 |
字體全名的長度上限。 |
REQUEST_FLAG_EXACT_MATCH |
2
|
uint32 |
已淘汰,請參閱 |
REQUEST_FLAG_NO_FALLBACK |
1
|
uint32 |
已淘汰,請參閱 |
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 |