diff options
| author | Ben Harris <bjh21@bjh21.me.uk> | 2006-12-31 21:38:46 +0000 |
|---|---|---|
| committer | Ben Harris <bjh21@bjh21.me.uk> | 2006-12-31 21:38:46 +0000 |
| commit | b83d28dfd3434a31fd42f0596ab299a2626230d6 (patch) | |
| tree | d8c6b249a72b3efde10d94aca581c6a13e7195b3 /paper.h | |
| parent | db26c259e5ecd9db2b9c914854b12f8ac7d7a558 (diff) | |
| download | halibut-b83d28dfd3434a31fd42f0596ab299a2626230d6.zip halibut-b83d28dfd3434a31fd42f0596ab299a2626230d6.tar.gz halibut-b83d28dfd3434a31fd42f0596ab299a2626230d6.tar.bz2 halibut-b83d28dfd3434a31fd42f0596ab299a2626230d6.tar.xz | |
Initial ligature support. This adds support for emitting ligatures, and adds
the "fi" and "fl" ligatures to the built-in fonts, but doesn't add support
for reading ligature information from AFM files because that requires coping
with forward references to glyph names, which is tricky.
[originally from svn r7045]
Diffstat (limited to 'paper.h')
| -rw-r--r-- | paper.h | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -14,6 +14,7 @@ typedef struct document_Tag document; typedef struct kern_pair_Tag kern_pair; +typedef struct ligature_Tag ligature; typedef struct font_info_Tag font_info; typedef struct font_data_Tag font_data; typedef struct font_encoding_Tag font_encoding; @@ -51,6 +52,13 @@ struct kern_pair_Tag { }; /* + * ... and this one represents a ligature. + */ +struct ligature_Tag { + unsigned short left, right, lig; +}; + +/* * This data structure holds static information about a font that doesn't * depend on the particular document. It gets generated when the font's * metrics are read in. @@ -88,6 +96,8 @@ struct font_info_Tag { unsigned short *glyphsbyname; /* A tree of kern_pairs */ tree234 *kerns; + /* ... and one of ligatures */ + tree234 *ligs; /* * For reasonably speedy lookup, we set up a 65536-element * table representing the Unicode BMP (I can conveniently @@ -363,8 +373,9 @@ struct outline_element_Tag { * Functions exported from bk_paper.c */ int kern_cmp(void *, void *); /* use when setting up kern_pairs */ +int lig_cmp(void *, void *); /* use when setting up ligatures */ void font_index_glyphs(font_info *fi); -int find_glyph(font_info *fi, char const *name); +int find_glyph(font_info const *fi, char const *name); /* |