summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog38
-rw-r--r--src/devices/grops/psrm.cpp8
2 files changed, 42 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 4cc5eba6..e01e440f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,41 @@
+2013-02-10 Werner LEMBERG <wl@gnu.org>
+
+ [grops] Make binary `%%BeginData' work; support `fontset' resource.
+
+ *src/devices/grops/psrm.cpp (resource_table): Add `fontset'.
+
+ (resource_manager::read_resource_arg): Do a case insensitive
+ comparison. The PostScript Reference Manual gives the following
+ example for a CFF resource (example 5.7):
+
+ %!PS-Adobe-3.0 Resource-FontSet
+ %%DocumentNeedResources: ProcSet (FontSetInit)
+ %%Title: (FontSet/CFFRoman27)
+ %%Version: 1.000
+ %%EndComments
+ %%IncludeResource: ProcSet (FontSetInit)
+ %%BeginResource: FontSet (CFFRoman27)
+ /FontSetInit /ProcSet findresource begin
+ %%BeginData: 622532 Binary Bytes
+ /CFFRoman27 622503 StartData
+ ... 622,503 bytes of binary data ...
+ %%EndData
+ %%EndResource
+ %%EOF
+
+ Note the `ProcSet' and `FontSet' keywords. While the old DSC
+ (Document Structure Convention) documentation doesn't cover
+ `FontSet' at all (the DSC documentation predates the invention of
+ CFF), it describes only `procset' (all letters downcase), and it
+ also says that the DSC parser works in a case sensitive manner.
+
+ In other words, `ProcSet' is not valid according to the DSC
+ documentation, only `procset' is. So much about today's validity of
+ DSC... This patch adapts grops's code to the PostScript reality.
+
+ (resource_manager::do_begin_data): Fix typo (present since the
+ beginning) which prevented correct handling of binary data.
+
2013-02-10 Bernd Warken <groff-bernd.warken-72@web.de>
* contrib/lilypond: New files for adding lilypond parts into groff
diff --git a/src/devices/grops/psrm.cpp b/src/devices/grops/psrm.cpp
index b5c7e3b2..52c62422 100644
--- a/src/devices/grops/psrm.cpp
+++ b/src/devices/grops/psrm.cpp
@@ -1,6 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2001, 2002, 2003, 2004,
- 2009
+/* Copyright (C) 1989-1992, 2000-2004, 2009, 2013
Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.com)
@@ -89,6 +88,7 @@ const int NEXTENSIONS = sizeof(extension_table)/sizeof(extension_table[0]);
const char *resource_table[] = {
"font",
+ "fontset",
"procset",
"file",
"encoding",
@@ -566,7 +566,7 @@ resource *resource_manager::read_resource_arg(const char **ptr)
int ri;
for (ri = 0; ri < NRESOURCES; ri++)
if (strlen(resource_table[ri]) == size_t(*ptr - name)
- && memcmp(resource_table[ri], name, *ptr - name) == 0)
+ && strncasecmp(resource_table[ri], name, *ptr - name) == 0)
break;
if (ri >= NRESOURCES) {
error("unknown resource type");
@@ -840,7 +840,7 @@ int resource_manager::do_begin_data(const char *ptr, int, FILE *fp,
current_lineno++;
}
if (cc != EOF)
- ungetc(c, fp);
+ ungetc(cc, fp);
}
else if (c == '\n') {
linecount++;