summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2013-06-25 20:21:21 +0000
committerrubidium <rubidium@openttd.org>2013-06-25 20:21:21 +0000
commit43a37f7f284c307c78698d4bb55f4aec745a45e1 (patch)
tree936043585e883d26438139562db61bf491a209e7
parent092c33be3ff9541074c41b1a5af82095461906ff (diff)
downloadopenttd-43a37f7f284c307c78698d4bb55f4aec745a45e1.tar.xz
(svn r25463) -Codechange: export more size related information from the fonts
-rw-r--r--src/fontcache.cpp16
-rw-r--r--src/fontcache.h31
2 files changed, 38 insertions, 9 deletions
diff --git a/src/fontcache.cpp b/src/fontcache.cpp
index e694b0e33..9e3ab2925 100644
--- a/src/fontcache.cpp
+++ b/src/fontcache.cpp
@@ -25,13 +25,16 @@ static const int ASCII_LETTERSTART = 32; ///< First printable ASCII letter.
static const int MAX_FONT_SIZE = 72; ///< Maximum font size.
/** Default heights for the different sizes of fonts. */
-static const int _default_font_height[FS_END] = {10, 6, 18, 10};
+static const int _default_font_height[FS_END] = {10, 6, 18, 10};
+static const int _default_font_ascender[FS_END] = { 8, 5, 15, 8};
/**
* Create a new font cache.
* @param fs The size of the font.
*/
-FontCache::FontCache(FontSize fs) : parent(FontCache::Get(fs)), fs(fs), height(_default_font_height[fs])
+FontCache::FontCache(FontSize fs) : parent(FontCache::Get(fs)), fs(fs), height(_default_font_height[fs]),
+ ascender(_default_font_ascender[fs]), descender(_default_font_ascender[fs] - _default_font_height[fs]),
+ units_per_em(1)
{
assert(parent == NULL || this->fs == parent->fs);
FontCache::caches[this->fs] = this;
@@ -187,8 +190,6 @@ bool SpriteFontCache::GetDrawGlyphShadow()
class FreeTypeFontCache : public FontCache {
private:
FT_Face face; ///< The font face associated with this font.
- int ascender; ///< The ascender value of this font.
- int descender; ///< The descender value of this font.
/** Container for information about a glyph. */
struct GlyphEntry {
@@ -272,9 +273,10 @@ FreeTypeFontCache::FreeTypeFontCache(FontSize fs, FT_Face face, int pixels) : Fo
FT_Set_Pixel_Sizes(this->face, 0, n);
}
- this->ascender = this->face->size->metrics.ascender >> 6;
- this->descender = this->face->size->metrics.descender >> 6;
- this->height = this->ascender - this->descender;
+ this->units_per_em = this->face->units_per_EM;
+ this->ascender = this->face->size->metrics.ascender >> 6;
+ this->descender = this->face->size->metrics.descender >> 6;
+ this->height = this->ascender - this->descender;
}
/**
diff --git a/src/fontcache.h b/src/fontcache.h
index 91e695640..a910ac0e4 100644
--- a/src/fontcache.h
+++ b/src/fontcache.h
@@ -26,16 +26,43 @@ private:
protected:
FontCache *parent; ///< The parent of this font cache.
const FontSize fs; ///< The size of the font.
- int height; ///< The height of the font;
+ int height; ///< The height of the font.
+ int ascender; ///< The ascender value of the font.
+ int descender; ///< The descender value of the font.
+ int units_per_em; ///< The units per EM value of the font.
public:
FontCache(FontSize fs);
virtual ~FontCache();
/**
+ * Get the FontSize of the font.
+ * @return The FontSize.
+ */
+ inline FontSize GetSize() const { return this->fs; }
+
+ /**
* Get the height of the font.
* @return The height of the font.
*/
- inline int GetHeight() { return this->height; }
+ inline int GetHeight() const { return this->height; }
+
+ /**
+ * Get the ascender value of the font.
+ * @return The ascender value of the font.
+ */
+ inline int GetAscender() const { return this->ascender; }
+
+ /**
+ * Get the descender value of the font.
+ * @return The descender value of the font.
+ */
+ inline int GetDescender() const{ return this->descender; }
+
+ /**
+ * Get the units per EM value of the font.
+ * @return The units per EM value of the font.
+ */
+ inline int GetUnitsPerEM() const { return this->units_per_em; }
/**
* Get the SpriteID mapped to the given key