X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/halibut/blobdiff_plain/c65367738ae7b8bde8c52d01d82a19987bb4941d..3038ce7acdf6ea5f0af267138287b2ae829d1261:/paper.h diff --git a/paper.h b/paper.h index 8bb3061..6813fe6 100644 --- a/paper.h +++ b/paper.h @@ -8,7 +8,12 @@ #ifndef HALIBUT_PAPER_H #define HALIBUT_PAPER_H +/* Number of internal units per PostScript point. */ +#define UNITS_PER_PT 1000 +#define FUNITS_PER_PT 1000.0 + typedef struct document_Tag document; +typedef struct kern_pair_Tag kern_pair; typedef struct font_data_Tag font_data; typedef struct font_encoding_Tag font_encoding; typedef struct font_list_Tag font_list; @@ -35,6 +40,16 @@ struct document_Tag { }; /* + * This data structure represents a kerning pair within a font. + */ +struct kern_pair_Tag { + /* Glyph indices, in font_data.glyphs. */ + unsigned short left, right; + /* Kern amount, in internal units. */ + int kern; +}; + +/* * This data structure represents a particular font. */ struct font_data_Tag { @@ -50,6 +65,7 @@ struct font_data_Tag { int nglyphs; const char *const *glyphs; const int *widths; + tree234 *kerns; /* * For reasonably speedy lookup, we set up a 65536-element * table representing the Unicode BMP (I can conveniently @@ -276,6 +292,7 @@ struct text_fragment_Tag { font_encoding *fe; int fontsize; char *text; + int width; }; struct xref_dest_Tag { @@ -306,5 +323,6 @@ struct outline_element_Tag { wchar_t ps_glyph_to_unicode(char const *glyph); extern const char *const ps_std_glyphs[]; const int *ps_std_font_widths(char const *fontname); +const kern_pair *ps_std_font_kerns(char const *fontname); #endif