添加到资源系统时,SVG 中的文本显示为圆形/平滑

问题描述 投票:0回答:1

Qt版本:5.15.15

我正在尝试使用 https://editsvg.online/editor.html 创建一些非常简单的 SVG 文件,然后将它们导入到我的 Qt 项目中以供使用。

我正在创建 6 个非常简单的 SVG,只是“+X”、“+Y”、“+Z”、“-X”、“-Y”和“-Z”的符号。

在编辑器中,当在浏览器中查看最终产品时,它看起来不错!但一旦导入到 QRC 中,它就会被平滑/圆化并丢失很多细节。

查看 QRC 文件时都会显示:

enter image description here

在最终节目中查看时:

enter image description here

有什么方法可以配置/告诉 Qt 在使用 SVG 时使用更高分辨率吗?

这是一个 SVG 示例,用于“-Z”:

<?xml version="1.0"?>
<svg width="24.000000000000004" height="24.000000000000004" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
 <!-- Created with SVG-edit - https://github.com/SVG-Edit/svgedit-->
 <title>minus_z</title>
 <g class="layer">
  <title>Layer 1</title>
  <text fill="#000000" font-family="Serif" font-size="24" id="svg_2" stroke="#000000" stroke-dasharray="null" stroke-linecap="null" stroke-linejoin="null" stroke-opacity="null" stroke-width="0" style="cursor: move;" text-anchor="middle" transform="matrix(0.840809, 0, 0, 0.894209, 10.2146, 12.059)" x="2.16" xml:space="preserve" y="8.04">-Z</text>
 </g>
</svg>

这是它在浏览器中的样子:

enter image description here

qt svg
1个回答
0
投票

正如评论所说,真正的问题是这实际上是文本而不是 SVG - 因此为了让它看起来相同,我们需要确保将首选字体加载到 QT 中。

这是我所做的更改的总和:

1:从 SVG 中删除所有“笔划”条目

2:向源目录添加新的首选字体,我选择“FreeSerif”,但任何都可以。我还将它添加到 QRC 文件中,但我不确定是否需要。

3:在新字体的路径上调用

int QFontDatabase::addApplicationFont(const QString &fileName)

4:如果路径输入正确,返回值将不是-1。 (我个人必须执行构建后步骤将字体复制到构建文件夹,但这可能不适用于所有人)

5:暂时添加一行,将该 ID 传递给

QStringList QFontDatabase::applicationFontFamilies(int id)
。这将给出新添加的字体的字体系列。一旦你把它写在某处,你就可以删除这一行。

6:打开 SVG 并编辑“font-family”标签以匹配 applicationFontFamilies() 的返回。

7:完成!

© www.soinside.com 2019 - 2024. All rights reserved.