字体元数据是如何存储的?


1

下载字体后,您可以看到它有很多元数据。例如,如果您下载Sansation字体并运行,mdls Sansation_Regular.ttf您将获得此输出:

com_apple_ats_name_family      = (
    Sansation
)
com_apple_ats_name_fond        = (
    "Sansation Regular"
)
com_apple_ats_name_full        = (
    "Sansation Regular"
)
com_apple_ats_name_postscript  = (
    "Sansation Regular"
)
com_apple_ats_name_style       = (
    Regular
)
com_apple_ats_names            = (
    "Bernd Montag",
    Regular,
    Sansation,
    "Sansation Regular",
    "Version 1.31",
    "\U00a9 2011 Bernd Montag"
)
kMDItemAuthors                 = (
    "Bernd Montag"
)
kMDItemContentCreationDate     = 2012-10-31 15:59:10 +0000
kMDItemContentModificationDate = 2012-10-31 15:59:10 +0000
kMDItemContentType             = "public.truetype-ttf-font"
kMDItemContentTypeTree         = (
    "public.truetype-ttf-font",
    "public.truetype-font",
    "public.font",
    "public.data",
    "public.item"
)
kMDItemCopyright               = "© 2011 Bernd Montag"
kMDItemDateAdded               = 2013-11-21 16:21:51 +0000
kMDItemDisplayName             = "Sansation_Regular.ttf"
kMDItemFonts                   = (
    Regular,
    Sansation,
    "Sansation Regular"
)
kMDItemFSContentChangeDate     = 2012-10-31 15:59:10 +0000
kMDItemFSCreationDate          = 2012-10-31 15:59:10 +0000
kMDItemFSCreatorCode           = ""
kMDItemFSFinderFlags           = 0
kMDItemFSHasCustomIcon         = 0
kMDItemFSInvisible             = 0
kMDItemFSIsExtensionHidden     = 0
kMDItemFSIsStationery          = 0
kMDItemFSLabel                 = 0
kMDItemFSName                  = "Sansation_Regular.ttf"
kMDItemFSNodeCount             = 78464
kMDItemFSOwnerGroupID          = 20
kMDItemFSOwnerUserID           = 501
kMDItemFSSize                  = 78464
kMDItemFSTypeCode              = ""
kMDItemKind                    = "TrueType font"
kMDItemLogicalSize             = 78464
kMDItemPhysicalSize            = 81920
kMDItemVersion                 = "Version 1.31"

现在,如果您在git存储库中检查此文件,将其推送到远程服务器并克隆该存储库,则会在此过程中丢失大量元数据。克隆后,运行mdls Sansation_Regular.ttf提供以下输出:

kMDItemFSContentChangeDate = 2013-11-21 16:31:26 +0000
kMDItemFSCreationDate      = 2013-11-21 16:31:26 +0000
kMDItemFSCreatorCode       = ""
kMDItemFSFinderFlags       = 0
kMDItemFSHasCustomIcon     = 0
kMDItemFSInvisible         = 0
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery      = 0
kMDItemFSLabel             = 0
kMDItemFSName              = "Sansation_Regular.ttf"
kMDItemFSNodeCount         = 78464
kMDItemFSOwnerGroupID      = 0
kMDItemFSOwnerUserID       = 501
kMDItemFSSize              = (null)
kMDItemFSTypeCode          = ""

我试图跑,mdimport Sansation_Regular.ttf丢失的属性没有回来。

发生了什么?有没有办法要求系统重新创建所有缺少的元数据属性?

我正在运行OS X 10.8.5。


我认为Spotlight索引存在问题。应该存在一些缺失的属性(例如kMDItemContentType)。您应该查看调试信息:mdimport -d 4 Sansation_Regular.ttf
Nicolas Bachschmidt

如果您压缩文件并通过解压缩在命令行上检查它,它似乎有一个资源分叉。我没有找到任何工具不再检查那件事。
卡尔斯滕2013年

我刚刚尝试了你概述的内容,将字体检入git存储库,然后克隆该存储库,所有Spotlight元数据在克隆的repo中都为我编制索引。所以看起来这可能是您的系统特有的东西。
Brian Webster 2013年

@Nicolas mdimport -d 4 Sansation_Regular.ttf不会打印任何内容并退出状态码为0. @Karsten根据如何以编程方式访问Snow Leopard上的文件资源分叉?您可以访问资源分叉Sansation_Regular.ttf/..namedfork/rsrc但它是空的。@Brian我正在使用OS X 10.8.5所以也许这个问题在Mavericks中解决了?
2013年

Answers:


1

事实证明元数据不可用,因为我克隆了/tmp未被Spotlight索引的目录中的存储库。克隆由Spotlight索引的某个地方的存储库工作正常。


0

这些com_apple_ats_name_family键看起来像扩展属性名称,“。”用“_”替换。尝试xattr -l Sansation_Regular.ttf在原始文件上运行,看看它是否有一堆扩展属性,当您签入时,这些属性不会与文件一起复制。


返回的唯一扩展属性xattr -l Sansation_Regular.ttf是com.apple.quarantine。所以它们似乎没有存储为扩展属性。
错过2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.