summaryrefslogtreecommitdiff
path: root/print/ghostscript7/files/patch-src:gdevpdfw.c
diff options
context:
space:
mode:
authorMark Linimon <linimon@FreeBSD.org>2004-05-28 02:55:46 +0000
committerMark Linimon <linimon@FreeBSD.org>2004-05-28 02:55:46 +0000
commit9fa169b13cbd59804f5d631000c9ddc8ac3663bc (patch)
tree3ecee0eff207e0b75129a933a40de4d48621ff69 /print/ghostscript7/files/patch-src:gdevpdfw.c
parentA 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.c60
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) {
+