代码之家  ›  专栏  ›  技术社区  ›  Zaur Nasibov

理解*nix图标的路径

  •  5
  • Zaur Nasibov  · 技术社区  · 16 年前

    有人能解释一下,为什么许多程序的图标路径是这样的: /usr/share/program/icons/hicolor/16x16/……

    我不明白的是为什么 希科罗 为什么 16x16,32×32 等。

    是否有任何功能(例如在GTK中)可以自动从此类路径中获得正确的图标?

    谢谢您!

    3 回复  |  直到 16 年前
        1
  •  11
  •   ptomato    16 年前

    这些图标路径由 Icon Theme Specification . 原因是所有应用程序都可以将其默认图标安装到 hicolor 主题(这是默认主题,意味着如果另一个主题中缺少图标,则来自的版本 希科罗 将被使用。

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

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

    您询问的功能也存在。在GTK中,有一些函数需要 const gchar *icon_name 参数,例如 gtk_image_new_from_icon_name() . 这些将加载具有当前主题中提供的名称的图标,如果当前主题中不存在该名称,则从 希科罗 主题。

        2
  •  2
  •   cypheon    16 年前

    术语“Hicolor”是标准图标集的名称,它是所有其他图标集的回退,这意味着如果在当前图标集中找不到应用程序的图标(例如 /usr/share/icons/oxygen )接下来将搜索Hicolor目录。

    16x16、32x32表示存储在该目录中的图像的大小,因为图标存储为简单的PNG文件,其中包含 图像(与Mac上的ICN不同)。

        3
  •  0
  •   dmckee --- ex-moderator kitten    16 年前

    如果问题不是 “为什么是‘Hicolor’?” 正如其他人所回答的,但是 “为什么将文件系统用作树型数据库?” 答案是,大多数Unix文件系统(所有旧文件系统)在一个目录中有大约1000个条目的路径上行走时都会陷入困境。

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

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