diff options
Diffstat (limited to 'print/ghostscript7/files/patch-src:gdevpdfw.c')
-rw-r--r-- | print/ghostscript7/files/patch-src:gdevpdfw.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/print/ghostscript7/files/patch-src:gdevpdfw.c b/print/ghostscript7/files/patch-src:gdevpdfw.c new file mode 100644 index 000000000000..a08b87d42724 --- /dev/null +++ b/print/ghostscript7/files/patch-src:gdevpdfw.c @@ -0,0 +1,60 @@ +--- src/gdevpdfw.c.org 2003-01-17 09:49:02.000000000 +0900 ++++ src/gdevpdfw.c 2003-09-25 17:50:54.000000000 +0900 +@@ -348,18 +348,19 @@ + /* Use the most common width as DW. */ + + { +- ushort counts[1001]; ++ ushort counts[1500*2]; /* histogram of (-1500..1500) */ + int dw_count = 0, i; + + memset(counts, 0, sizeof(counts)); + while (!psf_enumerate_glyphs_next(&genum, &glyph)) { +- int width = ppf->Widths[glyph - gs_min_cid_glyph]; ++ int cid = glyph - gs_min_cid_glyph; ++ int width = ppf->Widths[cid]; + +- counts[min(width, countof(counts) - 1)]++; ++ counts[max(0,min(width+countof(counts)/2,countof(counts)-1))]++; + } +- for (i = 0; i < countof(counts); ++i) ++ for (i = 0; i < countof(counts); i++) + if (counts[i] > dw_count) +- dw = i, dw_count = counts[i]; ++ dw = i - countof(counts)/2, dw_count = counts[i]; + if (dw != 0) + pprintd1(s, "/DW %d\n", dw); + } +@@ -496,14 +497,16 @@ + if (pdf_has_subset_prefix(chars, size)) + chars += SUBSET_PREFIX_SIZE, size -= SUBSET_PREFIX_SIZE; + pdf_put_name(pdev, chars, size); +- if (pef->sub_font_type == ft_CID_encrypted && ++ if ((pef->sub_font_type == ft_CID_encrypted || ++ pef->sub_font_type == ft_CID_TrueType) && + pef->cmapname[0] == '/' + ) { + stream_putc(s, '-'); + pdf_put_name_chars(pdev, (const byte*) (pef->cmapname + 1), + strlen(pef->cmapname + 1)); + } +- pprints1(s, "/Encoding %s", pef->cmapname); ++ pprints1(s, (pef->cmapname[0] == '/') ? "/Encoding%s" : "/Encoding %s", ++ pef->cmapname); + pprintld1(s, "/DescendantFonts[%ld 0 R]", + pdf_resource_id((const pdf_resource_t *)pef->DescendantFont)); + write_Widths = 0; +@@ -563,8 +566,10 @@ + break; + case -1: + pdf_write_CIDFont_widths(pdev, pef); +- if (pef->FontType == ft_CID_TrueType) +- pdf_write_CIDToGIDMap(pdev, pef, &cidmap_id); ++ if (pef->FontType == ft_CID_TrueType) { ++ if (pef->embed != FONT_EMBED_NO) ++ pdf_write_CIDToGIDMap(pdev, pef, &cidmap_id); ++ } + break; + } + if (pef->Differences) { + |