React Native项目Android 13设备Lato字体显示异常问题求助
这个问题主要由两方面的变更和字体自身特性共同导致:
Android 13的字体渲染逻辑变更
Android 13对自定义字体的行高计算机制做了调整,从旧版基于字体ascender/descender的宽松计算,改为严格遵循OpenType字体的排版度量标准(如cap height、x-height、lineGap等)。部分版本的Lato字体在这些度量字段的定义上不够规范,和Android 13的新逻辑不兼容,导致系统计算出的行高不足以容纳完整文字,出现截断。容器组件的布局约束放大问题
当文本放在<View>或<Pressable>内时,这些容器会给内部Text组件带来额外的布局约束(比如默认的minHeight、padding继承逻辑)。在Android 13的新渲染规则下,这些约束和Lato字体的异常度量值叠加,进一步挤压了文字的显示空间,从而触发问题;而直接渲染Text组件时,布局约束更宽松,不会暴露这个兼容性问题。Lato字体自身的元数据缺陷
部分分发渠道的Lato字体可能缺失或错误定义了Android 13所需的排版元数据,比如lineGap值设置不合理、ascender/descender范围未覆盖完整字符。换用其他符合现代排版标准的字体时,这类问题自然消失,也侧面验证了这一点。
如果需要验证,可以尝试替换为最新版本的官方Lato字体(确保包含完整OpenType元数据),或者手动为Text组件指定固定的lineHeight和paddingVertical属性,覆盖系统的自动计算逻辑。
内容的提问来源于stack exchange,提问作者Gayane

