diff options
author | Ekaitz Zarraga <ekaitz@elenq.tech> | 2022-12-13 19:58:50 +0100 |
---|---|---|
committer | Ekaitz Zarraga <ekaitz@elenq.tech> | 2022-12-14 15:57:07 +0100 |
commit | 02fe1199884d1056a3282268a8c75b3f086bfc9d (patch) | |
tree | dff312cbe6aa7131f3b442750f03e5ce4d7c416a /src/graphics | |
parent | e45e92e0ff294e6a1899b01b8cfdd8ab25d8dcdc (diff) |
Sketch a proper font rendering infrastructure:
- Kerning
- LineSpacing
- ...
We should include that for a proper interaction with Graphics::Text
and to be able to render beautiful UIs.
Also, we need to discard spaces in newlines, break lines by word, and
that kind of things... We'll see.
Diffstat (limited to 'src/graphics')
-rw-r--r-- | src/graphics/text.cpp | 1 | ||||
-rw-r--r-- | src/graphics/textureFont.cpp | 16 | ||||
-rw-r--r-- | src/graphics/textureFont.h | 7 |
3 files changed, 22 insertions, 2 deletions
diff --git a/src/graphics/text.cpp b/src/graphics/text.cpp index 43e8be1..7b135d6 100644 --- a/src/graphics/text.cpp +++ b/src/graphics/text.cpp @@ -5,6 +5,7 @@ using namespace Graphics; template <> void Text<TextureFont>::arrange(TextureFont &font){ // TODO: this is really awful rendering but works a little bit + // Add getLineSpacing + getKerning and so on unsigned int filledX = 0; unsigned int row = 0; unsigned int col = 0; diff --git a/src/graphics/textureFont.cpp b/src/graphics/textureFont.cpp index 3be2444..d39677e 100644 --- a/src/graphics/textureFont.cpp +++ b/src/graphics/textureFont.cpp @@ -37,6 +37,20 @@ const sf::Glyph & TextureFont::getGlyph(char ch) const{ return pair->second; } -const sf::Texture * TextureFont::getTexture(unsigned int _){ +const sf::Texture * TextureFont::getTexture(...){ return &tex_; } + +float TextureFont::getLineSpacing(...){ + // TODO make sure this is the appropiate measurement, it might be + // smaller... + // SFML obtains that from freetype face->metrics.height which only includes + // the height from the baseline, then that's corrected in sf::Text with an + // spacing ratio -> just test with a font and see what's supposed to do + return glyphSize_.y; +} + +float TextureFont::getKerning(...){ + // Monospaced fonts have 0 kerning + return 0; +} diff --git a/src/graphics/textureFont.h b/src/graphics/textureFont.h index f3f194a..224d300 100644 --- a/src/graphics/textureFont.h +++ b/src/graphics/textureFont.h @@ -22,7 +22,12 @@ namespace Graphics { public: TextureFont(const sf::Texture &texture, Descr desc); const sf::Glyph &getGlyph(char ch) const; - const sf::Texture *getTexture(unsigned int _); + + // Doesn't control sizes or anything, they are like this to be + // compatible with sf::Font somehow. + const sf::Texture *getTexture(...); + float getLineSpacing(...); + float getKerning(...); }; } |