summaryrefslogtreecommitdiff
path: root/src/graphics
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 /src/graphics
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.
Diffstat (limited to 'src/graphics')
-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(...);
};
}