summaryrefslogtreecommitdiff
path: root/pxl/pxfont.h
diff options
context:
space:
mode:
Diffstat (limited to 'pxl/pxfont.h')
-rw-r--r--pxl/pxfont.h89
1 files changed, 89 insertions, 0 deletions
diff --git a/pxl/pxfont.h b/pxl/pxfont.h
new file mode 100644
index 000000000..79e2be0ce
--- /dev/null
+++ b/pxl/pxfont.h
@@ -0,0 +1,89 @@
+/* Portions Copyright (C) 2001 artofcode LLC.
+ Portions Copyright (C) 1996, 2001 Artifex Software Inc.
+ Portions Copyright (C) 1988, 2000 Aladdin Enterprises.
+ This software is based in part on the work of the Independent JPEG Group.
+ All Rights Reserved.
+
+ This software is distributed under license and may not be copied, modified
+ or distributed except as expressly authorized under the terms of that
+ license. Refer to licensing information at http://www.artifex.com/ or
+ contact Artifex Software, Inc., 101 Lucas Valley Road #110,
+ San Rafael, CA 94903, (415)492-9861, for further information. */
+/*$Id$ */
+
+/* pxfont.h */
+/* Interface to PCL XL utilities */
+
+#ifndef pxfont_INCLUDED
+# define pxfont_INCLUDED
+
+/* Rename types. */
+#ifdef px_font_t_DEFINED
+# define pl_font_t_DEFINED
+#endif
+#define pl_font_s px_font_s
+#define pl_font_t px_font_t
+#include "plfont.h"
+#define px_font_t_DEFINED
+
+/*
+ * This file provides a layer of specialization and renaming around
+ * the font handling library.
+ *
+ * We store all font names as Unicode strings. Each element of a font
+ * name is a char16 (a 16-bit unsigned value in native byte order).
+ */
+
+/* Define storage locations for fonts. */
+typedef enum {
+ pxfsDownLoaded,
+ pxfsInternal,
+ pxfsMassStorage
+} px_font_storage_t;
+
+/* Fill in generic font boilerplate. */
+#define px_fill_in_font(pfont, pxfont, pxs)\
+ pl_fill_in_font(pfont, pxfont, pxs->font_dir, pxs->memory, "nameless_font")
+
+/*
+ * Define a font. The caller must fill in pxfont->storage and ->font_type.
+ */
+int px_define_font(px_font_t *pxfont, byte *header, ulong size,
+ gs_id id, px_state_t *pxs);
+
+/*
+ * Look up a font name and return the base font. This procedure implements
+ * most of the SetFont operator. Note that this procedure will widen and/or
+ * byte-swap the font name if necessary.
+ */
+int px_find_font(px_value_t *pfnv, uint symbol_set, px_font_t **ppxfont,
+ px_state_t *pxs);
+
+/* Look up a font name and return an existing font. */
+/* This procedure may widen and/or byte-swap the font name. */
+/* If this font is supposed to be built in but no .TTF file is available, */
+/* return >= 0 and store 0 in *ppxfont. */
+int px_find_existing_font(px_value_t *pfnv, px_font_t **ppxfont,
+ px_state_t *pxs);
+
+/*
+ * Concatenate a widened (16-bit) font name onto an error message string.
+ */
+void px_concat_font_name(char *message, uint max_message,
+ const px_value_t *pfnv);
+
+/*
+ * Paint text or add it to the path.
+ * This procedure implements the Text and TextPath operators.
+ */
+int px_text(px_args_t *par, px_state_t *pxs, bool to_path);
+
+/*
+ * Free a font. This is the freeing procedure in the font dictionary.
+ * We have to define the name without parameters so that we can use it
+ * as a procedure constant.
+ */
+/*#define px_free_font(mem, pxf, cname) pl_free_font(mem, pxf, cname)*/
+#define px_free_font pl_free_font
+
+#endif /* pxfont_INCLUDED */