]> git.tdb.fi Git - libs/gl.git/blobdiff - source/font.h
Require import module names to be identifiers
[libs/gl.git] / source / font.h
index efef8351830bd45425dc8045ed144884bca3eac5..dab09fa400d3ba0381eda46f5f64fb0e5f823883 100644 (file)
@@ -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 &);
        };
@@ -53,15 +54,19 @@ public:
 
 private:
        typedef std::map<unsigned, Glyph> GlyphMap;
-       typedef std::pair<unsigned, unsigned> KerningKey;
-       typedef std::map<KerningKey, float> KerningMap;
+       typedef std::pair<unsigned, unsigned> CodePair;
+       typedef std::map<CodePair, float> KerningMap;
+       typedef std::map<CodePair, unsigned> LigatureMap;
 
        RefPtr<const Texture2D> texture;
        float native_size;
        float ascent;
        float descent;
+       float cap_height;
+       float x_height;
        GlyphMap glyphs;
        KerningMap kerning;
+       LigatureMap ligatures;
 
 public:
        Font();
@@ -81,6 +86,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. */
@@ -129,6 +136,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