X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ffont.h;h=9f040dc99d0e45cc5ffdec41153dfc71e5149778;hp=efef8351830bd45425dc8045ed144884bca3eac5;hb=bec07999d95b76f4b47cffcc564d0cd0afc0435e;hpb=6327ae3d1f8a976f839ce333500c1643f9965fca diff --git a/source/font.h b/source/font.h index efef8351..9f040dc9 100644 --- a/source/font.h +++ b/source/font.h @@ -29,6 +29,7 @@ public: void init(); void glyph(unsigned); void kerning(unsigned, unsigned, float); + void ligature(unsigned, unsigned, unsigned); void texture(); void texture_ref(const std::string &); }; @@ -49,19 +50,25 @@ public: float w, h; float off_x, off_y; float advance; + + Glyph(); }; private: typedef std::map GlyphMap; - typedef std::pair KerningKey; - typedef std::map KerningMap; + typedef std::pair CodePair; + typedef std::map KerningMap; + typedef std::map LigatureMap; RefPtr texture; float native_size; float ascent; float descent; + float cap_height; + float x_height; GlyphMap glyphs; KerningMap kerning; + LigatureMap ligatures; public: Font(); @@ -81,6 +88,8 @@ public: float get_ascent() const { return ascent; } float get_descent() const { return descent; } + float get_cap_height() const { return cap_height; } + float get_x_height() const { return x_height; } /** Returns the width of a string, in multiples of the font size. Scale the result according to the size used in rendering. */ @@ -96,20 +105,6 @@ public: float get_string_width(const std::string &str) const { return get_string_width(str); } - /** Draws a string to the framebuffer with Immediate. It is drawn with size - 1.0; set up matrices for the desired size before the call. */ - void draw_string(const std::string &, StringCodec::Decoder &, const Color & = Color()) const; - - template - void draw_string(const std::string &str, const Color &color = Color()) const - { - typename C::Decoder dec; - draw_string(str, dec, color); - } - - void draw_string(const std::string &str, const Color &color = Color()) const - { draw_string(str, color); } - /** Builds the primitives for a string. Two-dimensional vertex and texture coordinates are generated. Size 1.0 is used for building; set up the builder's matrix before the call. The texture is not bound, to avoid @@ -129,6 +124,7 @@ public: private: void create_glyph_quad(const Glyph &, PrimitiveBuilder &) const; float get_glyph_advance(unsigned, unsigned = 0) const; + unsigned get_ligature(unsigned, unsigned) const; }; } // namespace GL