summaryrefslogtreecommitdiff
path: root/bk_ps.c
diff options
context:
space:
mode:
Diffstat (limited to 'bk_ps.c')
-rw-r--r--bk_ps.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/bk_ps.c b/bk_ps.c
index f66420a..86b8465 100644
--- a/bk_ps.c
+++ b/bk_ps.c
@@ -46,7 +46,7 @@ void ps_backend(paragraph *sourceform, keywordlist *keywords,
fprintf(fp, "%%!PS-Adobe-3.0\n");
fprintf(fp, "%%%%Creator: Halibut, %s\n", version);
- fprintf(fp, "%%%%DocumentData: Clean8Bit\n");
+ fprintf(fp, "%%%%DocumentData: Clean7Bit\n");
fprintf(fp, "%%%%LanguageLevel: 1\n");
for (pageno = 0, page = doc->pages; page; page = page->next)
pageno++;
@@ -315,9 +315,13 @@ static void ps_string(FILE *fp, char const *str) {
fprintf(fp, "(");
for (c = str; *c; c++) {
- if (*c == '(' || *c == ')' || *c == '\\')
- fputc('\\', fp);
- fputc(*c, fp);
+ if (*c < ' ' || *c > '~') {
+ fprintf(fp, "\\%03o", 0xFF & (int)*c);
+ } else {
+ if (*c == '(' || *c == ')' || *c == '\\')
+ fputc('\\', fp);
+ fputc(*c, fp);
+ }
}
fprintf(fp, ")");
}