diff options
author | rubidium <rubidium@openttd.org> | 2013-06-25 20:21:21 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2013-06-25 20:21:21 +0000 |
commit | 43a37f7f284c307c78698d4bb55f4aec745a45e1 (patch) | |
tree | 936043585e883d26438139562db61bf491a209e7 | |
parent | 092c33be3ff9541074c41b1a5af82095461906ff (diff) | |
download | openttd-43a37f7f284c307c78698d4bb55f4aec745a45e1.tar.xz |
(svn r25463) -Codechange: export more size related information from the fonts
-rw-r--r-- | src/fontcache.cpp | 16 | ||||
-rw-r--r-- | src/fontcache.h | 31 |
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 |