我最近一直在尝试在游戏中使用字形来实现文本渲染。我已经能够将它们渲染到屏幕上,但是我希望能够缩放它们而不将其移出正在渲染的当前行。
例如,它应如下所示:
不是这样的:
换句话说,我希望所有字形都沿着相同的原点排列。我尝试使用字形量度提出自己的算法,以尝试准确放置字形,然后将它们乘以比例。我尝试过的所有方法都不适合每个角色或每个比例。
答案 0 :(得分:1)
感谢@Scheff向我指出正确的方向。通过使用与他们给我的帖子有关的帖子,我能够开发出两个单独的公式-一个用于对齐字形的顶部,另一个用于对齐字形的底部。我想我会把它们张贴在这里,以帮助其他人解决这个问题。这是两个函数:
TTF_Font font;
float scaleOfText;
int maxY;
int positionInput, realPositionValue; /*positionInput is where the program is told that the glyphs
should be rendered on the y-axis and realPositionValue is the position on the y-axis where the
glyphs will be rendered once they are aligned*/
char glyph;
TTF_GlyphMetrics(font, glyph, nullptr, nullptr, nullptr, &maxY, nullptr);
//Formula itself:
realPositionValue = positionInput - (TTF_FontAscent(font) * scale - (maxY * scale));
如下所示:https://imgur.com/a/wtjcuSE
TTF_Font font;
float scaleOfText;
int maxY;
int positionInput, realPositionValue; /*positionInput is where the program is told that the glyphs
should be rendered on the y-axis and realPositionValue is the position on the y-axis where the
glyphs will be rendered once they are aligned*/
char glyph;
TTF_GlyphMetrics(font, glyph, nullptr, nullptr, nullptr, &maxY, nullptr);
//Formula itself:
realPositionValue = (positionInput + maxY * scale) - ((TTF_FontAscent(font) + maxY) * scale);
如下所示:https://imgur.com/a/v8RXaii
我还没有使用混合在一起的不同字体进行测试,但是我认为它应该也能正常工作。我希望这对遇到与我面临的问题类似的人有帮助。再次感谢大家的帮助!