我想知道在 Windows 上渲染 gtk-rs (GTK4) 中的主题感知图标需要什么。我向资源添加了图标,并且可以成功渲染 PNG 文件。用 SVG 直接替换不会渲染任何内容。 是否可以像 Web 开发中那样使用图标字体?如果是这样,我如何在gtk4中添加自定义字体?
我的文件夹结构
[root]
resources/
icons/
scalable/
actions/
svgicon.svg
pngicon.png
gresources.xml
src/
main.rs
window.ui
window.rs
build.rs
Cargo.toml
gresources.xml
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/myapp/gui/">
<file compressed="true">icons/scalable/actions/pngicon.png</file>
<file compressed="true">icons/scalable/actions/svgicon.svg</file>
</gresource>
</gresources>
窗口.ui
<child>
<object class="GtkPicture">
<property name="file">resource:///myapp/gui/icons/scalable/actions/svgicon.svg</property>
<property name="width-request">100</property>
<property name="height-request">100</property>
</object>
</child>
<child>
<object class="GtkPicture">
<property name="file">resource:///myapp/gui/icons/scalable/actions/pngicon.png</property>
<property name="width-request">100</property>
<property name="height-request">100</property>
</object>
</child>
如上所述,png 图像会渲染,但 svg 不会渲染。我读到人们可以使用 librsvg 在 Windows 上渲染 svgs,但是由于 Windows 上缺少 libxml2,因此无法编译。我想知道为什么这个问题如此之大,以及 freedesktop(默认图标)是如何在 gtk 中构建和渲染的?
提前感谢您的帮助
幸运的是我现在可以自己回答我的答案了。在 gtk-rs 的 rustbook 的末尾,它解释了如何使用 libadwita (我对此不感兴趣),并解释了 librsvg 也可以使用 gvsbuild 工具构建,类似于 gtk4 已构建
gvsbuild build libadwaita librsvg
构建这个库立即解决了我无法加载 svgs 的问题。