2010-07-25 87 views
5

可能有人请解释一下,为什么许多程序的图标的路径是这样的: 在/ usr /共享/程序/图标/高彩色/ 16×16/...了解的* nix图标路径

什么我不不懂就是为什么高彩色为什么16×16×16,32×32等

是否有任何功能(例如在GTK),可自动得到这样那样的路径正确的图标?

谢谢!

回答

11

那些图标路径由Icon Theme Specification标准化。其理由是,所有的应用程序可以安装自己的默认图标进入hicolor主题(这是默认主题,也就是说,如果一个图标是从另一个主题缺失,从hicolor版本将被使用。)

此外,程序可以请求与所提供图标大小不同的图标大小,例如37x37,系统将选择最合适的可用大小(如32x32)并将其缩放到所需的大小。

如果有人想要覆盖应用程序的图标,例如为视力不佳的用户制作高对比度的黑白版本,那么他们所要做的就是制作一个同名的图标,它在高对比度的黑白主题中,它将覆盖hicolor图标。

您询问的功能也存在。在GTK中,函数需要参数const gchar *icon_name,如gtk_image_new_from_icon_name()。这些将使用您从当前主题提供的名称加载图标,并且如果它不存在于当前主题中,则从hicolor主题开始。

2

术语“hicolor”是标准图标集的名称,它是所有其他图标集的后备,也就是说,如果在当前图标集中找不到应用程序的图标(例如/usr/share/icons/oxygen),则hicolor目录接下来搜索。

16x16,32x32暗示存储在该目录中的图像的大小,因为图标存储为简单的PNG文件,其精确包含一个图像(不同于例如mac上的图标)。

0

如果问题不是“为什么'hicolor'?”正如其他人回答,但“为什么使用文件系统作为树形数据库?”答案是,大多数unix文件系统(所有旧的文件系统)在行走目录中有超过1000个条目的路径时停滞不前。

因为这些文件系统中的目录必须线性搜索

一些更现代的文件系统支持O(日志N)搜索并可以有效地处理更高的计数。