87 lines
2.4 KiB
C
87 lines
2.4 KiB
C
#ifndef VG_FONT_H
|
||
#define VG_FONT_H
|
||
|
||
#include <VG/openvg.h>
|
||
|
||
|
||
typedef struct {
|
||
// glyph index within the OpenVG font object
|
||
VGuint glyphIndex;
|
||
// the advance width for this glyph
|
||
VGfloat escapement[2];
|
||
// OpenVG path commands defining the glyph geometry
|
||
VGint commandsCount;
|
||
const VGubyte* commands;
|
||
// OpenVG path coordinates defining the glyph geometry
|
||
VGint coordinatesCount;
|
||
const VGfloat* coordinates;
|
||
// fill rule of glyph geometry
|
||
VGFillRule fillRule;
|
||
} Glyph;
|
||
|
||
typedef struct {
|
||
// the key representing two glyph indices ((leftGlyphIndex << 16) + rightGlyphIndex)
|
||
VGuint key;
|
||
// the kerning amount relative to the chars couple
|
||
VGfloat x;
|
||
VGfloat y;
|
||
} KerningEntry;
|
||
|
||
typedef struct {
|
||
// OpenVG font object
|
||
VGFont openvgHandle;
|
||
// glyphs data
|
||
const Glyph* glyphs;
|
||
// number of glyphs
|
||
const VGuint glyphsCount;
|
||
// kerning table
|
||
const KerningEntry* kerningTable;
|
||
// number of kerning entries
|
||
const VGuint kerningTableSize;
|
||
} Font;
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
// given a character code, return its glyph index
|
||
VGint glyphIndexFromCharCode(const Font* font,
|
||
const VGint charCode);
|
||
|
||
// given a glyph index, return the associated Glyph structure
|
||
const Glyph* glyphFromGlyphIndex(const Font* font,
|
||
const VGint glyphIndex);
|
||
|
||
// given a character code, return the associated Glyph structure
|
||
const Glyph* glyphFromCharCode(const Font* font,
|
||
const VGint charCode);
|
||
|
||
// given a couple of glyph indices, return the relative kerning (NULL if kerning is zero)
|
||
const KerningEntry* kerningFromGlyphIndices(const Font* font,
|
||
const VGint leftGlyphIndex,
|
||
const VGint rightGlyphIndex);
|
||
|
||
// given a couple of character codes, return the relative kerning (NULL if kerning is zero)
|
||
const KerningEntry* kerningFromCharCodes(const Font* font,
|
||
const VGint leftCharCode,
|
||
const VGint rightCharCode);
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ߴ<EFBFBD>
|
||
int vgTextSize(const Font* font, const char* str, VGfloat *cx, VGfloat *cy);
|
||
|
||
|
||
int vgTextOut (const Font* font,
|
||
const char* str,
|
||
const VGbitfield paintModes);
|
||
|
||
int vgFontInit (void);
|
||
|
||
int vgFontExit (void);
|
||
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif /* VG_FONT_H */
|