summaryrefslogtreecommitdiff
path: root/paper.h
diff options
context:
space:
mode:
authorBen Harris <bjh21@bjh21.me.uk>2006-12-31 21:38:46 +0000
committerBen Harris <bjh21@bjh21.me.uk>2006-12-31 21:38:46 +0000
commitb83d28dfd3434a31fd42f0596ab299a2626230d6 (patch)
treed8c6b249a72b3efde10d94aca581c6a13e7195b3 /paper.h
parentdb26c259e5ecd9db2b9c914854b12f8ac7d7a558 (diff)
downloadhalibut-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.h13
1 files changed, 12 insertions, 1 deletions
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);
/*