是否可以缩放字形而不让它们移出线?

问题描述 投票:-2回答:1

我最近一直试图在游戏中使用字形实现文本渲染。我已经能够将它们渲染到屏幕上,但我希望能够缩放它们,而不会让它们移出正在渲染的当前行。

例如,它应该如下所示:

Expected

不是这个:

Output

换句话说,我希望所有的字形沿着共同的原点排列。我已经尝试使用我自己的算法使用Glyph Metrics来尝试准确地放置字形然后我将它们乘以比例。我所尝试的并不适用于每个角色或每个尺度。

c++ sdl-2 sdl-ttf
1个回答
1
投票

感谢@Scheff指出我正确的方向。使用我发现的与他们给我的相关的帖子,我能够开发出两个独立的公式 - 一个用于对齐字形的顶部,另一个用于对齐字形的底部。我想我会把它们发布在这里,以帮助其他人解决这个问题。以下是两个功能:

Aligning the Glyphs Along Their Tops:

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

Aligning the Glyphs Along Their Bottoms:

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

我还没有用混合在一起的不同字体来测试它,但我认为它应该也能正常工作。我希望这可以帮助任何遇到类似问题的人。再次感谢大家的帮助!

© www.soinside.com 2019 - 2024. All rights reserved.