qt - 将字体样式与 QML 完全匹配

标签 qt fonts qml qtquick2

我有一个 QML 应用程序,它使用的字体系列有 5 种粗细(浅色/常规/中度/粗体/黑色)和 3 种样式:普通、斜体和压缩。

font listing

当我加载相同重量的“正常”和“压缩”样式时,它们共享相同的姓氏;首先加载的样式就是使用的样式:

FontLoader { source:"qrc:/fonts/DINPro-CondRegular.otf"; id:cond }
FontLoader { source:"qrc:/fonts/DINPro-Regular.otf";     id:norm }
Timer { running:true; onTriggered:console.log(id:norm.name==cond.name) } // outputs `true`

// This ends up using the condensed flavor
Text { text:'hi mom'; font { family:'DINPro' } }

是否有某种方法可以告诉 Text 对象使用特定的字体文件或 FontLoader 实例?有一个italic property对于斜体样式,但没有“压缩”风格的属性。

如何在同一文档中同时使用普通字体和压缩字体,并指定不同的文本使用哪种字体?

最佳答案

我发现对于这种特定的字体我可以使用 styleName property来控制各种口味。我只是不断尝试各种样式的字符串,直到找到有效的字符串。

FontLoader { source:"qrc:/fonts/DINPro-Regular.otf"     }
FontLoader { source:"qrc:/fonts/DINPro-CondRegular.otf" }
FontLoader { source:"qrc:/fonts/DINPro-CondMedium.otf"  }

Text { text:'norm'; font { family:'DINPro';                    styleName:'Regular' } }
Text { text:'bold'; font { family:'DINPro'; weight:Font.Bold;  styleName:'Regular' } }
Text { text:'blak'; font { family:'DINPro'; weight:Font.Black; styleName:'Regular' } }
Text { text:'cond norm'; font { family:'DINPro'; styleName:'CondRegular' } }    
Text { text:'cond bold'; font { family:'DINPro'; styleName:'CondBold'    } }    
Text { text:'cond blak'; font { family:'DINPro'; styleName:'CondBlack'   } }

感觉就像是用胶带和绳子粘在一起的,但它正在工作。如果有人有更强大的方法来处理这个问题 - 特别是确切地知道哪些字符串适用于 styleName - 我会很乐意接受这个答案,而不是这个答案。

关于qt - 将字体样式与 QML 完全匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45242560/

相关文章:

c++ - 读取 anchors.fill 定义的 QML 元素大小 : parent

c++ - 使用 Qt Creator 读取 rosbag 文件时出错

c++ - 像 Qt Creator 一样在 Visual Studio 中打开 Cmake 项目

visual-studio - Qt Creator 中应该如何管理多个项目?

css - 增加 font-weight 加粗粗细

java - 无法导入 java.awt.font 类

qt - 如何通过单击菜单项打开 "external link"?

css - 即使在 ?#iefix 到位后,IE @font-face 也无法正常工作

c++ - 用户将如何在基于 QML 的插件系统中添加额外的功能?

android - 在 Android 和 iOS 上使用 QT 和 QML 编辑视频