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 | |
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.
-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(...); }; } |