python - Photoshop 如何将字体格式转换为栅格化图层?

标签 python c photoshop

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

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

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

最佳答案

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

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

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

一旦你有了 vector 形式,这基本上就是贝塞尔曲线路径,就像任何其他 vector 艺术作品一样,并且可以用相同的方式呈现。

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

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

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

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

关于python - Photoshop 如何将字体格式转换为栅格化图层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33600822/

相关文章:

c - 如何制作动态字符?

python - 在Python中使用ctypes访问DLL返回的对象的内容

python - 如何存储许多文件句柄以便我们可以在稍后阶段关闭它

python - 为什么 Python 中一个变量可以全局访问,而另一个则不能?

c - 如何初始化数组并填充缓冲区中的字符?

C - 数数{制作程序}

opencv - 如何在OpenCV中实现类似Photoshop的OilPaint效果?

ios - 在 Photoshop 中自动保存 iPhone 图像

actionscript-3 - 有没有办法使用 AS3 导出 PSD

Python:如何定义一个获取字符串列表或字符串的函数