summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEkaitz Zarraga <ekaitz@elenq.tech>2022-12-13 19:58:50 +0100
committerEkaitz Zarraga <ekaitz@elenq.tech>2022-12-14 15:57:07 +0100
commit02fe1199884d1056a3282268a8c75b3f086bfc9d (patch)
treedff312cbe6aa7131f3b442750f03e5ce4d7c416a
parente45e92e0ff294e6a1899b01b8cfdd8ab25d8dcdc (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.cpp1
-rw-r--r--src/graphics/textureFont.cpp16
-rw-r--r--src/graphics/textureFont.h7
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(...);
};
}