Make /Widths arrays for fonts more compact by using FirstChar and LastChar
authorben <ben@cda61777-01e9-0310-a592-d414129be87e>
Wed, 10 May 2006 19:30:21 +0000 (19:30 +0000)
committerben <ben@cda61777-01e9-0310-a592-d414129be87e>
Wed, 10 May 2006 19:30:21 +0000 (19:30 +0000)
to skip unused code points.

git-svn-id: svn://svn.tartarus.org/sgt/halibut@6673 cda61777-01e9-0310-a592-d414129be87e

bk_pdf.c

index 8eda320..5edf592 100644 (file)
--- a/bk_pdf.c
+++ b/bk_pdf.c
@@ -164,11 +164,20 @@ void pdf_backend(paragraph *sourceform, keywordlist *keywords,
 
        {
            object *widths = new_object(&olist);
-           objtext(font, "/FirstChar 0\n/LastChar 255\n/Widths ");
+           int firstchar = -1, lastchar = -1;
+           char buf[80];
+           for (i = 0; i < 256; i++)
+               if (fe->indices[i] >= 0) {
+                   if (firstchar < 0) firstchar = i;
+                   lastchar = i;
+               }
+           sprintf(buf, "/FirstChar %d\n/LastChar %d\n/Widths ",
+                   firstchar, lastchar);
+           objtext(font, buf);
            objref(font, widths);
            objtext(font, "\n");
            objtext(widths, "[\n");
-           for (i = 0; i < 256; i++) {
+           for (i = firstchar; i <= lastchar; i++) {
                char buf[80];
                double width;
                if (fe->indices[i] < 0)