+ fprintf(fp, "%%%%BeginResource: procset Halibut 0 0\n");
+ /*
+ * Supply a prologue function which allows a reasonably
+ * compressed representation of the text on the pages.
+ *
+ * Expects two arguments: a y-coordinate, and then an array.
+ * Elements of the array are processed sequentially as follows:
+ *
+ * - a number is treated as an x-coordinate
+ * - an array is treated as a (font, size) pair
+ * - a string is shown
+ */
+ fprintf(fp,
+ "/tdict 4 dict dup begin\n"
+ " /arraytype {aload pop scalefont setfont} bind def\n"
+ " /realtype {1 index moveto} bind def\n"
+ " /integertype /realtype load def\n"
+ " /stringtype {show} bind def\n"
+ "end def\n"
+ "/t { tdict begin {dup type exec} forall end pop } bind def\n");
+
+ fprintf(fp, "%%%%EndResource\n");