QML导入Montserrat Semibold字体显示异常问题求助
解决Montserrat Semibold字体在QML中显示异常的问题
问题原因
你加载的是Montserrat Semibold字体文件,但设置font.bold: true时,Qt会强制将字体切换为该家族的粗体(Bold)变体,而非你需要的半粗体(Semibold);设置font.bold: false则会切换回常规(Regular)变体,因此两种设置都无法正确显示目标样式。
解决方案
直接移除font.bold属性,因为你已经通过FontLoader加载了专门的Semibold字体文件,无需额外指定粗体样式。同时建议等待字体加载完成后再使用,避免因字体未就绪 fallback 到系统字体。
修改后的代码示例:
FontLoader 部分
FontLoader{ id: semiBoldFont source: "Montserrat-SemiBold.ttf" }
Text 组件部分
Text{ text: Math.round(100*progress.value) + "%" anchors.horizontalCenter: parent.horizontalCenter font.pixelSize: qmlCfg.fontSize color: "black" // 直接使用加载的Semibold字体家族,不设置font.bold font.family: semiBoldFont.name // 可选:等待字体加载完成后再显示,避免样式异常 visible: semiBoldFont.status === FontLoader.Ready }
额外说明
如果你的系统中同时安装了Montserrat的其他变体(如Regular、Bold),Qt可能会根据font.bold的设置自动切换变体,因此必须确保不设置该属性,让Qt使用你通过FontLoader加载的特定Semibold文件。
内容的提问来源于stack exchange,提问作者Arnold
相关产品推荐
相关产品推荐

