压缩文件会破坏它吗?

ale*_*lex 87 compression zip

我只是让某人给我发送一个压缩psd文件。

他们拒绝了,理由是压缩文件会破坏字体

我认为压缩文件是完全可逆的,因此它被广泛使用。我认为另一个人是不正确的。

压缩破坏文件内容有什么道理吗?

Mik*_*ick 134

不,压缩文件不能破坏它。如果您的 zip 文件没有损坏,它会在解压缩时重现相同的文件。

在这种情况下,安装在两个不同系统上的字体之间的差异可能会导致问题,但这与 zip/unzip 过程完全无关。

  • 此外,某些 zip 格式支持冗余,这意味着以 zip 格式存储实际上比存储纯文件更*安全*。 (35认同)
  • 这就是我所怀疑的。感谢您的回答。 (5认同)
  • -1 理论上这是真的,但在实践中,Mac 字体在 PC 上被解压缩为 0 字节存在问题。这是由于正在创建资源分支。自己试试看。 (3认同)

Mar*_*ell 80

一般使用中,zip 是无损的(假设实现是无错误的),但有一种情况可能适用于数据丢失:NTFS 备用数据流。这个很少使用的功能允许单个文件具有多个独立的内容集。大多数代码只会看到未命名的流,但其他代码可以存在。

所以; 如果程序决定将数据存储在 NTFS 备用数据流中,您的 zip 客户端将看不到该部分(它需要明确要求它,而RAR 是目前唯一这样做的)。

但要强调的是:这很少使用,通常不用于 PSD 之类的东西。我怀疑你的朋友/同事完全错了。

  • 哇,这对我来说是全新的知识。 (11认同)
  • @msw - 他们不会随意变异;简单 - 可以有多个与单个文件记录相关联的数据。几乎总是只有一个(很少使用),但是...... (7认同)
  • 对我来说很新很奇怪。什么时候文件不是文件?当其内容随意变化时。我听说过更严重的错误,但不是很多。 (5认同)
  • 回到SO!太技术了!(当然只是在开玩笑;) (4认同)
  • 另一方面,我们有 [人们抱怨系统特定的元数据被强行包含在档案中](http://superuser.com/questions/259703/get-mac-tar-to-stop-putting- tar-archives 中的文件名)。 (3认同)

Gra*_*ett 33

在某些情况下,如果 Mac 字体被压缩然后解压缩,它可能会不相同。这可能不会破坏它,但与上述某些陈述相反,该过程可能不会提供相同的文件。

这里讨论的情况:

http://xahlee.org/UnixResource_dir/macosx.html

http://ask.metafilter.com/59789/How-to-email-my-font

但简而言之:

  1. 如果它们是包含资源分支的旧字体,并且用户使用的是旧版本的 Mac OS X,通常是 10.4 或更早版本。像这样的旧字体在 OS X 上工作,尽管它们最初是为 OS 9 和更早版本的 Macintosh 操作系统设计的。很可能(而且,根据我的经验,很普遍)有些人仍在使用他们 20 年前构建的字体库。通常这些是艺术家和艺术总监类型。例如,我有一些字体的创建日期为 1993 年,数百种字体的创建日期为 1998 年,大多数带有资源分支。当然,我应该将这些转换为更现代的格式或停止使用它们,但让我们面对现实:一旦您购买了 Adob​​e 字体库,您就再也不想购买了。在我与广告艺术总监一起工作的这些年里,

  2. 在某些版本的操作系统中,某些元数据将被剥离。元数据可能是添加到文件信息字段的东西。这不会破坏文件,但同样,往返 zip-unzip 也不会产生相同的文件。

PS:我在这里假设如果一个人正在压缩一个 PSD 文件以交付给另一个人,它没有被压扁并且字体没有被转换为轮廓,这意味着一个人也会用 PSD 交付字体文件以便接收端的人可以对文件进行自己的更改。这是一种常见的做法。

  • +1 - 我希望我能给它足够的分数来将它推到堆栈的顶部。Mac OS 具有 Type 1 和 TrueType 字体变体,其中字体数据存储在资源分支中。虽然操作系统中的原生 zip/unzip 工具可以很好地处理这种情况,但并非所有工具(尤其是移植到 OS X 的命令行工具)都可以。更糟糕的是,*不*压缩字体并尝试通过电子邮件或FTP发送它们*会*破坏它们! (2认同)

zer*_*kms 14

ZIP 使用校验和来检查解压后的文件是否与打包前完全相同。

因此,如果由于某种原因(例如损坏的存档)对其进行了更改 - 它甚至不会被解压缩。

  • 原谅迂腐,但 ZIP 不使用校验和 - 它使用 32 位循环冗余校验(又名 [CRC-32](http://en.wikipedia.org/wiki/Cyclic_redundancy_check)),它检测更广泛的范围的错误。 (13认同)
  • 如果人们可以[并且确实]将_加密散列函数的结果称为“校验和”,那么术语“校验和”的含义显然变得比其原始定义更广泛。 (5认同)

gee*_*aur 9

只有当他们在做一些愚蠢的事情时,比如对其进行文本模式转换,或者如果某处有损坏的 zip/unzip 被嵌入的 zip 混淆。(过去发生过此类错误——这意味着可能是 10 年前。)