文本 (Text)

Kanzi 具有以下文本节点:

字体类型

Kanzi 中的默认字体系列是 Fira Sans Regular。字体文件存储在 <KanziInstallation>/Studio/Asset Library/Fonts。 当您想使用自己的字体时,将其导入到您的 Kanzi Studio 项目中。

请参阅 导入字体。

您可以在 Kanzi 应用程序中使用这些字体类型:

  • TrueType 和 OpenType 字体 (ttf 和 otf 文件)

  • iType 链接字体(ltt 文件)。请参阅 iType 关联字体。

  • 位图字体(fnt 文件)。请参阅 使用位图字体。

确保将您在 Kanzi 应用程序中要包含的文本的所有字形包含在使用的字体中。

字号 (Font Size)

Kanzi 以像素为单位设置字体的大小。当您设置 Font Size 属性时,Kanzi 将该值传递给 Freetype 库,Kanzi 使用该库通过 FT_Set_Char_Size 函数以默认 dpi 值 72 渲染字体。

例如,以下都显示相同字号的字母“H”。

  • Text Block 或 Text Box 节点设置了以下属性:

    • Text 到 H。

    • 将 Font Family 设置为 Arial。

    • Font Size 到 36

  • HTML 标记

    <p style="font-family:arial; font-size:36px;">H</p>
    

如果您想控制 dpi 缩放或以像素以外的单位设置字体大小,您必须在您的 Kanzi 应用程序中实现该功能。例如,如果您想根据 dpi 设置自动选择项目中图像和布局使用的内容,请在您的 Kanzi 应用程序中实现该功能。

为 Preview 设置字体引擎

您可以设置 Kanzi Studio Preview 使用哪个字体引擎来渲染应用程序中的文本。

要为 Preview 设置字体引擎:

  1. 在主菜单中选择 Project > Properties。

    ../../_images/project-properties.png
  2. 在 Properties 中设置 Font Engine 属性:

    • FreeType 使用 FreeType 光栅化器、HarfBuzz 排版器、ICU 双向库和 libunibreak 进行换行。这是默认的字体引擎。

    • iType 使用 Monotype iType 光栅化器和 WorldType® Shaper™ 进行整形。请参阅 安装 iType 字体引擎。

    • None 不加载字体引擎。当您不加载字体引擎时,Preview 不会在您的应用程序中渲染文本。

    ../../_images/font-engine.png

要了解如何设置在应用程序启动时加载哪个字体引擎,请参阅 FontEngine。

设置字体提示

字体提示为光栅化提供了指令:将字体的轮廓映射到屏幕像素。字体提示旨在既保持字体的设计美感,又优化字体在不同大小下的可读性。

Kanzi 中的文本节点默认情况下使用字体中包含的字体提示数据。

例如,字体提示可能会影响字符的高度和宽度、线条的宽度、边缘对比度以及字符之间的间距。

要为 Text Block 或 Text Box 节点设置字体提示,请在 Node Tree 中选择该节点,在 Properties 中添加 Font Hinting Preference 属性,并将其设置为:

  • No hinting 用于渲染没有字体提示的文本。

  • Native hinting 使用字体中包含的提示数据来渲染文本。如果字体不包含提示数据,Kanzi 使用字体引擎光栅化器的提示器。这是默认值。

  • Auto hinting 使用字体引擎光栅化器的提示器来渲染文本。请参阅 为 Preview 设置字体引擎。

../../_images/font-hinting-preference.png

字体回退

在 Kanzi 中,您可以为 Font Family 定义 Fallback Font Chain。如果当前字体中没有某个字符,Kanzi 会按顺序搜索后备字体链,并选择第一个包含该缺失字符的字体系列。

如果在任何后备字体系列中都找不到该字符,则使用当前字体中 字形 ID 为 0 的字形作为缺失字形字符。

使用后备字体可以:

  • 在单个文本节点中显示多种语言。

  • 在常规文本旁显示表情符号和符号等特殊字符。

使用后备字体渲染时,Kanzi 会尝试从后备字体系列中选择与当前字体的样式和权重最接近的字体文件。

为了优化性能和内存使用,只有当当前字体或链中任何靠前的后备字体中都找不到某个字符时,才会加载后备字体。

要配置 Fallback Font Chain,您可以使用下拉菜单从现有字体系列中选择,或使用 kzb URL 添加字体系列。

../../_images/font-fallbacks.png

彩色字体

要渲染表情符号和其他彩色字形,请导入包含彩色字形的字体文件。彩色字体文件既可以是 Font Family 的主字体,也可以是后备字体。

各 Kanzi 字体引擎支持以下彩色字体格式:

字体文件类型

FreeType

iType

glyf 表(普通的非彩色可缩放文本和图标)

✅

✅

CBDT 表(不可缩放的 PNG 图像)

✅

✅

SBIX 表(不可缩放的 PNG 图像)

✅

❌

COLRv0 表(纯色的可缩放形状)

✅

✅

SVG 表(带颜色渐变的 SVG 图像)

❌

❌

COLRv1 表(带颜色渐变的可缩放形状)

❌

❌

当您使用的字体文件包含不受支持的字体格式的字形时:

  • 如果字体文件包含多种格式的字形,Kanzi 将使用字形的非彩色版本

  • Kanzi 不渲染这些字形

备注

Kanzi 使用与普通文本不同的笔刷和材质来渲染彩色字形。该材质仅使用 Foreground Brush 属性颜色(对于 3D 文本为 Font Color 属性)的 alpha 通道。这意味着您可以更改文本颜色,而不会影响表情符号的颜色。

../../_images/color-fonts.png

使用 iType 字体引擎自定义泰文文本中的自动换行功能。

您可以通过设置要使用的泰语词典来自定义 Kanzi iType 字体引擎在泰语文本中如何换行,而不是使用内置于 iType 字体引擎中的词典。

WorldType® SDK 随附:

  • 泰语字典

  • Python 工具,可创建您的应用程序可以使用的泰语字典。

您可以在 WorldType® SDK 的 wtle/product/tools/language_dictionaries/thai 目录中找到这些资源。

要在泰文文本中自动换行:

  1. 通过传递给 GenerateThaiDictionary.py 来为 iType 字体引擎创建泰语字典:

    • 纯文本格式的泰语字典

    • 要存储生成的字典的文件。

    py -2 GenerateThaiDictionary.py thai-dictionary.txt thai-dictionary.wtd
    

    GenerateThaiDictionary.py 创建一个 wtd 文件,您可以在 Kanzi 应用程序的应用程序配置中设置:

    Reading lines from file "thai-dictionary.txt"... done.
    Extracting, filtering, and normalizing words... done.
    Adding words to trie... done.
       number of words: 8
       number of characters: 31
       longest word length: 7
       number of trie nodes: 32
       number of trie edges: 31
    Compressing trie into a DAWG (Directed Acyclic Word Graph)... done.
       number of edges in root node: 9
       number of DAWG nodes: 24
       number of DAWG edges: 30
       edges / characters = 96.8 %
       dawgEdges / trieEdges = 96.0 %
       dawgNodes / trieNodes = 75.0 %
       DAWG array elements: 31
    Writing DAWG to file "thai-dictionary.wtd"... done.
       file size: 0 k
    
  2. 要将您的应用程序设置为使用您创建的泰语词典,请在文本编辑器中设置 <ProjectName>/Application/bin/application.cfg 文件中的 iType 字体引擎词典:

    # Set additional backend dictionaries.
    ITypeDictionaryUrls = file:///usr/share/itype/thai-dictionary.wtd
    

    请参阅 字体引擎字典。

  3. (可选) 要设置 Kanzi Studio Preview 以在使用 iType 字体引擎时正确渲染泰文文本, 在 Kanzi Studio 中打开您的项目,并在主菜单中选择 Project > Properties。在 Properties 中,将 Preview Working Directory 属性设置为包含您在上一步中创建的 application.cfg 文件的目录。

    ../../_images/project-properties.png ../../_images/properties-preview-working-directory.png

另请参阅

使用 Text Block 节点

使用 Text Box 节点

导入字体

图形缓存纹理大小