From b83d28dfd3434a31fd42f0596ab299a2626230d6 Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Sun, 31 Dec 2006 21:38:46 +0000 Subject: 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] --- paper.h | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'paper.h') diff --git a/paper.h b/paper.h index b0ea032..9bea29d 100644 --- a/paper.h +++ b/paper.h @@ -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); /* -- cgit v1.1