summaryrefslogtreecommitdiff
path: root/print/ghostscript7/files/patch-src:gdevpdfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'print/ghostscript7/files/patch-src:gdevpdfs.c')
-rw-r--r--print/ghostscript7/files/patch-src:gdevpdfs.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/print/ghostscript7/files/patch-src:gdevpdfs.c b/print/ghostscript7/files/patch-src:gdevpdfs.c
new file mode 100644
index 000000000000..0378f15c88ab
--- /dev/null
+++ b/print/ghostscript7/files/patch-src:gdevpdfs.c
@@ -0,0 +1,41 @@
+--- src/gdevpdfs.c.org 2003-09-20 00:11:16.000000000 +0900
++++ src/gdevpdfs.c 2003-09-25 17:44:10.000000000 +0900
+@@ -481,15 +481,21 @@
+
+ if (cid < pfd->chars_count) {
+ int index = cid >> 3, mask = 0x80 >> (cid & 7);
++ int gid;
++
++ if (!(pfd->chars_used.data[index] & mask) ||
++ !(psubf->widths_known[index] & mask)) {
+
+- if (!(pfd->chars_used.data[index] & mask)) {
+- pfd->chars_used.data[index] |= mask;
+ if (psubf->CIDToGIDMap) {
+ gs_font_cid2 *const subfont2 =
+ (gs_font_cid2 *)subfont;
+- int gid =
+- subfont2->cidata.CIDMap_proc(subfont2, glyph);
+
++ gid = subfont2->cidata.CIDMap_proc(subfont2, glyph);
++ }
++ }
++ if (!(pfd->chars_used.data[index] & mask)) {
++ pfd->chars_used.data[index] |= mask;
++ if (psubf->CIDToGIDMap) {
+ if (gid >= 0) {
+ psubf->CIDToGIDMap[cid] = gid;
+ mark_glyphs_used(subfont, gid + gs_min_cid_glyph,
+@@ -500,7 +506,11 @@
+ if (!(psubf->widths_known[index] & mask)) {
+ int width;
+
+- code = pdf_glyph_width(psubf, glyph, subfont, &width);
++ if (psubf->CIDToGIDMap)
++ code = pdf_glyph_width(psubf, gid + gs_min_cid_glyph,
++ subfont, &width);
++ else
++ code = pdf_glyph_width(psubf, glyph, subfont, &width);
+ if (code == 0) {
+ psubf->Widths[cid] = width;
+ psubf->widths_known[index] |= mask;