【问题标题】:Rendering cursive fonts渲染草书字体
【发布时间】:2018-05-17 22:45:31
【问题描述】:

我有一些在 opengl 中渲染文本的经验,其中的方法是使用字体字形(可以通过诸如 freetype 之类的东西创建),然后通过使用纹理坐标拉单个让来使用,但是我想尝试使用更多创建font 并正在考虑如何渲染草书字体。 我注意到这里的很多字体都是草书字体,并且无法找到有关渲染草书字体的任何信息。我意识到纹理查找方法可能不会以相同的方式工作。我正在寻找一些建议来指出一个方向,因为我一直找不到。

https://www.fontsquirrel.com/fonts/list/popular

我唯一能想到的就是想出一组贝塞尔曲线来表示整个句子,然后进行渲染。这将使动态渲染文本变得困难,因为曲线需要实时连接以保持平滑度。

有没有人在渲染草书字体方面取得了成功?

【问题讨论】:

  • 您可能想看看“草书字体”在排版方面的工作原理。
  • 是的,你是对的。我认为这实际上是一个非常有趣的问题。最好避免在这里走捷径。

标签: opengl graphics fonts rendering


【解决方案1】:

草书字体的工作方式与非草书字体相同。唯一的问题是相邻字形的轴对齐边界框可能重叠。从理论上讲,这可能发生在任何字体上——不仅是草书字体。

字形不仅以其宽度和高度为特征。它还具有用于布置文本的附加信息。在 FreeType 中,这些是方位角和前进距离(请参阅documentation)。前进距离告诉您文本光标将前进多少,即下一个字形将从哪里开始。方位将告诉您在当前文本光标和实际字形之间必须留有多少空白。对于非常倾斜的字形,这个方位可能是负数,即字形从光标位置的左侧开始。类似地,前进距离可能小于字形宽度。这允许相邻的字形交织在一起。

顺便说一句,不同的 API 以不同的方式调用这些字体指标。例如,DirectWrite 称它们为悬垂。

【讨论】:

  • 我花了一些时间阅读草书字体,这似乎是有道理的。只是为了确保我理解,对于草书字体,每个字母可能有多个版本,然后在使用哪个版本的字母之间进行匹配。这样做是有道理的,以允许负对齐之类的东西正确地将字母彼此相邻放置。
  • 嗯,可能有不同的字体样式(如常规、粗体、斜体)。除此之外,字母通常没有多个版本。只需选择任意草书字体并在您选择的文本编辑器中键入一些文本。字母看起来总是一样的。
【解决方案2】:

实际上,您要做的是定义字符之间的关系,并使用相同字符的视觉变化,使它们看起来相互关联。

例如,草书小写“O”旁边的草书小写“L”将从 L 的底部链接到 O 的顶部;而如果 L 之后的字母是“i”,那么它必须链接底部的字符。

如果您打算编写一些预先确定的文本,那么您当然也可以手动安排内容。如果您正在寻找实时解决方案,则需要上述方法。

this page 中寻找一些可能在“实现”部分中找到的库,这应该会为您指明即用型资产的方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 2021-02-06
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    相关资源
    最近更新 更多