【问题标题】:How does Photoshop convert type format to a rasterized layer?Photoshop 如何将文字格式转换为栅格化图层?
【发布时间】:2015-11-09 00:42:33
【问题描述】:

我最近一直在考虑字体。我发现将按键转换为以特定字体显示的字符的整个过程非常有趣。更让我着迷的是,每个角色都不是图像,而是打开(或关闭)的正确像素束。

在 Photoshop 中制作文本图层时,我假设它与文字处理器中的任何其他文本图层一样。有一个字形附加到一个字符并显示出来。所以从技术上讲,它仍然不是一个“图像”,它可以被视为文字处理器中的文本。但是,当您栅格化文本图层时,会使用所使用的字体创建文本图像。有人能告诉我 Photoshop 是如何做到的吗?我假设应该有一个查找表,其中包含 Photoshop 访问以栅格化图层的字符图形。

我想创建一个程序,在其中生成我正在按下的字符的图像(在 C 或 Python 或类似的语言中)。有没有办法做到这一点?

【问题讨论】:

    标签: python c photoshop


    【解决方案1】:

    Adobe 目前为 the Photoshop file format 提供可公开访问的文档。我需要从 PSD 文件中提取信息(大约一年前,但实际上是古老的 CS2 版本的 Photoshop)所以我可以警告你这不是简单的阅读,并且有一些部分(至少在 CS2 文档中) ) 不完整或不准确。通常,即使您有文件格式文档,也需要进行一些逆向工程才能使用该文件格式。

    即便如此,请参阅 here 了解有关 Photoshop 6.0 中的 TySh 块的信息(快速浏览一下,不确定它是否仍然是当前的文本形式 - 向 Photoshop “输入”)。

    无论如何,是的 - 文本作为字符代码序列存储在内存和文件中。字体基本上是矢量图的集合,因此可以将文本转换为矢量路径。这可以通过自己处理字体文件,在操作系统调用中使用(Windows 肯定有一个,但我不记得名字了,它现在困扰着我,所以我以后可能会弄明白),或者使用图书馆。

    一旦你有了矢量形式,这基本上就是贝塞尔路径,就像任何其他矢量图一样,并且可以以相同的方式呈现。

    或者直接从文本到像素,您只需询问例如Windows 为您绘制文本 - 如果您不想在屏幕上绘制,可能会绘制到内存 DC(设备上下文)。

    FreeType 是一个用于处理字体的开源库。它绝对可以渲染为位图。我还没有检查过,但它可能也可以将文本转换为矢量路径 - 毕竟它需要将其作为渲染像素的一部分。

    Cairo 是另一个显而易见的库,用于字体处理等等,但我自己从未直接使用过它。

    wxWidgets 是另一个显而易见的库,它使用类似于 Windows 的内存-DC 方案,尽管我不记得确切的类/方法名称。不过,将文本转换为向量可能超出了 wxWidgets 的范围。

    【讨论】:

      猜你喜欢
      • 2021-05-07
      • 2017-01-14
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 2013-06-29
      • 2011-01-14
      • 2018-01-20
      • 2019-05-06
      相关资源
      最近更新 更多