协议
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
。
返回指定字体系列的信息,如果没有指定名称的系列,则返回 null。此函数遵循系列名称别名并忽略大小写,因此对“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 的响应保证在缓冲区中包含相同的数据。客户端可以使用此值检测是否已以解析形式缓存字体。 |
无默认取景方式 |
font_index |
uint32
|
|
无默认取景方式 |
风格
在 fuchsia.fonts/font_provider.fidl 中定义
已弃用。
请参阅Style2
。
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
weight |
uint32
|
无默认取景方式 | |
width |
uint32
|
无默认取景方式 | |
slant |
Slant
|
无默认取景方式 |
枚举
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
。
名称 | 值 | 说明 |
---|---|---|
无 |
0 |
|
SERIF |
1 |
|
SANS_SERIF |
2 |
|
单空间 |
3 |
|
斜体 |
4 |
|
奇幻 |
5 |
GenericFontFamily 严格
类型:uint32
在 fuchsia.fonts/styles.fidl 中定义
可用作特定系列后备的通用字体系列组。
每个字体系列都属于某个通用字体系列(请参阅下面的示例)。
如果无法提供确切请求的系列,但在请求中指定了回退组,提供程序可能会返回属于回退组的其他一些系列。例如,如果客户端请求带有 SANS_SERIF
回退的“Crashlytics”系列,而“Crashlytics”不可用,则提供商可能会返回另一个可用的 Sans Serif 系列(如“Roboto Regular”)。
另请参阅: https://www.w3.org/TR/css-fonts-4/#generic-font-families
名称 | 值 | 说明 |
---|---|---|
SERIF |
1 |
字形在大多数笔画的末端都有小的“衬线”、钩子或凹口。 示例:佐治亚州、Noto Serif、Times New Roman。 |
SANS_SERIF |
2 |
大多数笔画末尾没有衬线的字形。 示例:Crashlytics、Noto Sans、Roboto、Tahoma。 |
单空间 |
3 |
固定宽度的字体。 示例:Consolas、Courier New、Inconsolata。 |
斜体 |
4 |
手写或手写字体。 示例:Brush Script、Comic Sans、Lucida 书法。 |
奇幻 |
5 |
装饰性字体。 示例:Impact、Papyrus。 |
SYSTEM_UI |
6 |
目标平台上的默认界面字体。
添加此属性是为了保证 CSS 规范的完整性;字体清单不应声明字体属于 不常用。 |
表情符号 |
7 |
专门用于渲染表情符号代码点的字体。 示例:Noto Color Emoji。 |
MATH |
8 |
主要用于渲染数学表达式的字体。 不常用。 |
FANGSONG |
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
在 fuchsia.fonts/events.fidl 中定义
指示 Provider
中的可用字体集发生更改的事件。这通常是由下载和缓存临时字体所致。客户端应考虑重新请求字体并重新渲染任何显示的文本。
序数 | 字段 | 类型 | 说明 |
---|
Style2
在 fuchsia.fonts/styles.fidl 中定义
请求或描述类型面时可使用的样式属性。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
slant |
Slant
|
请参阅 |
2 |
weight |
Weight
|
字形的粗细或粗细。允许的值是 [1, 1000] 范围内的整数,但大多数实际字体系列仅支持 100 的一些整数倍:{100, 200, ..., 900}。普通文本 ( 请参阅: https://developer.mozilla.org/zh-CN/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
|
缓冲区的标识符。具有相同 |
3 |
font_index |
uint32
|
|
BITS
TypefaceRequestFlags 严格
类型:uint32
在 fuchsia.fonts/provider.fidl 中定义
TypefaceRequest
的布尔标志。
名称 | 值 | 说明 |
---|---|---|
EXACT_FAMILY |
1 | 停用字体系列回退。如果请求的字体系列不存在或不包含请求的代码点,服务将不会尝试搜索设置的回退字体。 |
EXACT_STYLE |
2 | 停用近似样式匹配。该服务将仅返回与请求的样式完全匹配的人脸。例如,所请求的“半粗体”粗细不能替换成“中”;所请求的“斜体”斜体不能替换为“斜体”。 |
常量
名称 | 值 | 类型 | 说明 |
---|---|---|---|
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 |
字体的 Postscript 名称的最大长度。此限制来自 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 |
别名
名称 | 值 | 说明 |
---|---|---|
Weight |
uint16 |