diff options
author | Mark Linimon <linimon@FreeBSD.org> | 2004-05-28 02:55:46 +0000 |
---|---|---|
committer | Mark Linimon <linimon@FreeBSD.org> | 2004-05-28 02:55:46 +0000 |
commit | 9fa169b13cbd59804f5d631000c9ddc8ac3663bc (patch) | |
tree | 3ecee0eff207e0b75129a933a40de4d48621ff69 /print/ghostscript7/files/patch-src:gdevpdfw.c | |
parent | A graph manipulation library for Objective Caml. (diff) |
Handle NeverEmbed CJK TrueType into PDF, and write correct glyph widths
of CJK TrueType into PDF, and do not write CIDToGIDMap of NeverEmbed CJK
TrueType and Encoding of CIDFont into PDF.
PR: ports/62078
Submitted by: KOMATSU Shinichiro <koma2 at jiro dot c dot u-tokyo dot ac dot jp>
Reviewed by: KATO Tsuguru <jungle at m8 dot dion dot ne dot jp>
Notes
Notes:
svn path=/head/; revision=110164
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) { + |