跳到主要内容

富文本段内字体栈

使用现有PBF字形服务为不同文字段选择独立字体栈

共同点文字支持 format 段内 text-font。每段可以选择完整有序字体栈;省略时继承根 layout.text-font。同一字符在不同字体栈下使用各自的实际bitmap和advance,因此会改变字形、文字宽度与换行,不只是修改字体名称。

// 地址和字体名称应换成你的字形服务实际提供的值。
map.setGlyphs('https://your-glyphs.example/{fontstack}/{range}.pbf');
map.setLayoutProperty('formatted', 'text-font', ['Narrow Font', 'Fallback']);
map.setLayoutProperty('formatted', 'text-field', ['format',
  'A', {'text-color': 'red'},
  'A', {
    'text-color': 'blue',
    'text-font': ['literal', ['Wide Font', 'Fallback']]
  }
]);
await map.sqs.flush({render: true});

以上修改已有的点文字图层;基础设置见分段富文本。段 text-font 使用返回名称数组的共同表达式,支持 get、literal 和词法变量。字体栈顺序保留,不只使用第一个名称;完整栈编码为字形模板中的一个路径组件。根字体属性使用普通名称数组,段内常量数组需使用 literal。

PBF字形到达后会重新准备文字画面;单次render确认不代表字形已下载,需按资源/idle事件判断就绪。可复制共同脚本与完整验证页自行生成两个字体栈的测试PBF,不下载第三方字体文件。

所有段仍共用整体锚点、旋转、垂直对齐、碰撞与查询框。每栈1至8个非空名称,每名称最多256字节且不含NUL;文字、字形、图集、缓存和表达式预算继续生效,非法候选保留旧标签与画面。能力 commonFormattedTextFonts 表示此PBF路径已接通。

未配置服务或字形缺失/失败时沿用内置字体回退与警告。字体名称不会加载本机字体文件;具体字形由PBF服务提供。TTF/OTF文件、font-faces、操作系统字体选择、复杂文字整形和SDF图片段仍未实现;注册RGBA图片段已接通,设备及正式发布另行验收。

完整自包含脚本见portable-format-font.js,独立页面见formatted-font-check.html。脚本通过自定义协议生成测试PBF字形;同一个A使用窄/宽字体栈,在原生与网页主线程/Worker各验证14项及真实字形宽度。原生宿主等待资源期间须持续驱动画面,网页宿主自动处理。