A
Air官方
字体是移植工程里沉默的基石:渲染全对但字体不对,用户一眼就觉得廉价。Linux 应用的字体体系走 fontconfig,鸿蒙上这一层要重新安家。这篇讲原理与替换策略。
▍fontconfig 是什么
Linux 的字体管家:应用问它要字(给字号、字重、语言),它按配置规则(族名替换、语言匹配、路径)返回具体字体文件。桌面应用通常假设几个常见字体存在,这些假设在鸿蒙上不成立——不处理就是字体回退到缺字方框,或干脆文字不渲染(真实案例:某绘图应用的画布文字全消失,排查发现渲染引擎的字体配置指向不存在的目录,控件正常画布全空,极具迷惑性)。
▍移植三步
第一步,带字体:随包分发改用字体(至少一套中文与一套西文),装进应用数据目录。注意许可证——开源字体(思源系等)是安全选择。第二步,配 fontconfig:生成应用私有的字体配置(字体目录指向应用数据路径、缓存路径指向可写目录),环境变量在进程最早期设置——字体库会缓存路径查询结果,晚了设置不生效。第三步,映射规则:把应用请求的常见字体名(西文桌面常见族)映射到随包字体,配置文件里写替换规则。
▍中文字体的选择要点
字号小数与字重档位:设计类应用对字重敏感,随包字体要有多字重(细、常规、粗);等宽场景(代码、终端)要带等宽字体;标点与中西文混排的间距处理各字体不同,按应用类型选。fallback 链要配置:中文字体缺西文字形时回落到西文字体,顺序错了会出现标点风格混乱。
▍性能与缓存
首次扫描字体目录建缓存有开销,启动路径上要么预建缓存随包分发,要么把建缓存挪到后台线程。频繁按字号要字形的路径注意缓存命中。
▍验收
中英文混排、生僻字、多字重、等宽对齐四场景视觉走查;切换系统字号后应用跟随;暗黑模式下字重观感正常。
▍一句话
字体配置放最早期,字体随包走,映射规则写全——这三件事做对,文字渲染问题少八成。
有疑问欢迎在本板块直接发帖,我们会逐条回复。
▍fontconfig 是什么
Linux 的字体管家:应用问它要字(给字号、字重、语言),它按配置规则(族名替换、语言匹配、路径)返回具体字体文件。桌面应用通常假设几个常见字体存在,这些假设在鸿蒙上不成立——不处理就是字体回退到缺字方框,或干脆文字不渲染(真实案例:某绘图应用的画布文字全消失,排查发现渲染引擎的字体配置指向不存在的目录,控件正常画布全空,极具迷惑性)。
▍移植三步
第一步,带字体:随包分发改用字体(至少一套中文与一套西文),装进应用数据目录。注意许可证——开源字体(思源系等)是安全选择。第二步,配 fontconfig:生成应用私有的字体配置(字体目录指向应用数据路径、缓存路径指向可写目录),环境变量在进程最早期设置——字体库会缓存路径查询结果,晚了设置不生效。第三步,映射规则:把应用请求的常见字体名(西文桌面常见族)映射到随包字体,配置文件里写替换规则。
▍中文字体的选择要点
字号小数与字重档位:设计类应用对字重敏感,随包字体要有多字重(细、常规、粗);等宽场景(代码、终端)要带等宽字体;标点与中西文混排的间距处理各字体不同,按应用类型选。fallback 链要配置:中文字体缺西文字形时回落到西文字体,顺序错了会出现标点风格混乱。
▍性能与缓存
首次扫描字体目录建缓存有开销,启动路径上要么预建缓存随包分发,要么把建缓存挪到后台线程。频繁按字号要字形的路径注意缓存命中。
▍验收
中英文混排、生僻字、多字重、等宽对齐四场景视觉走查;切换系统字号后应用跟随;暗黑模式下字重观感正常。
▍一句话
字体配置放最早期,字体随包走,映射规则写全——这三件事做对,文字渲染问题少八成。
有疑问欢迎在本板块直接发帖,我们会逐条回复。
楼主
7 天前