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

返回指定字体系列的信息,如果没有指定名称的系列,则返回 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”。字体系列搜索不区分大小写。如果没有指定系列,或者指定的系列没有所请求的 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 的响应保证在缓冲区中包含相同的数据。客户端可以使用此值检测是否已以解析形式缓存字体。

无默认取景方式
font_index uint32

buffer 中的字体索引。用于每个文件可能包含多种字体的字体格式,例如 TTC (TrueType Collection)。

无默认取景方式

风格

fuchsia.fonts/font_provider.fidl 中定义

已弃用。 请参阅Style2

字段类型说明默认
weight uint32 无默认取景方式
width uint32 无默认取景方式
slant Slant 无默认取景方式

枚举

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 回退的“Crashlytics”系列,而“Crashlytics”不可用,则提供商可能会返回另一个可用的 Sans Serif 系列(如“Roboto Regular”)。

另请参阅: https://www.w3.org/TR/css-fonts-4/#generic-font-families

名称说明
1

字形在大多数笔画的末端都有小的“衬线”、钩子或凹口。 示例:佐治亚州、Noto Serif、Times New Roman。

2

大多数笔画末尾没有衬线的字形。 示例:Crashlytics、Noto Sans、Roboto、Tahoma。

3

固定宽度的字体。 示例:Consolas、Courier New、Inconsolata。

4

手写或手写字体。 示例:Brush Script、Comic Sans、Lucida 书法。

5

装饰性字体。 示例:Impact、Papyrus。

6

目标平台上的默认界面字体。 添加此属性是为了保证 CSS 规范的完整性;字体清单不应声明字体属于 SYSTEM_UI 通用系列,而应声明更具体的选项(例如,用于 Roboto 的 SERIF)。

不常用。

7

专门用于渲染表情符号代码点的字体。 示例:Noto Color Emoji。

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/zh-CN/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

缓冲区的标识符。具有相同 buffer_id 的响应保证在缓冲区中包含相同的数据。客户端可以使用此值检测其是否已以解析形式缓存字体。

font_index uint32

buffer 中返回的字体的索引。用于每个文件可能包含多个字体的数字字体格式,例如 TTC (TrueType Collection)。

BITS

TypefaceRequestFlags 严格

类型:uint32

fuchsia.fonts/provider.fidl 中定义

TypefaceRequest 的布尔标志。

名称说明
1

停用字体系列回退。如果请求的字体系列不存在或不包含请求的代码点,服务将不会尝试搜索设置的回退字体。

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 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

别名

名称说明
Weight uint16