Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 94920 Details for
Bug 144769
ghostscript-esp-8.15.2_p20060520 and earlier drop accents and umlauts with some fonts
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Stripped-down 08_revert_cjk.patch
08_revert_cjk.patch (text/plain), 18.47 KB, created by
Lars Petersen
on 2006-08-23 02:42:27 UTC
(
hide
)
Description:
Stripped-down 08_revert_cjk.patch
Filename:
MIME Type:
Creator:
Lars Petersen
Created:
2006-08-23 02:42:27 UTC
Size:
18.47 KB
patch
obsolete
>diff -urNad src/gdevpdtc.c src/gdevpdtc.c >--- src/gdevpdtc.c 2006-08-20 13:55:04.000000000 +0900 >+++ src/gdevpdtc.c 2006-08-20 13:55:39.000000000 +0900 >@@ -653,13 +653,23 @@ > if (pdsubf->u.cidfont.glyphshow_font_id != 0) > font0 = (gs_font_type0 *)gs_find_font_by_id(font->dir, > pdsubf->u.cidfont.glyphshow_font_id, &scaled_font->FontMatrix); >- if (font0 == NULL) { >+#if 1 /* XXX */ >+ if (font0 == NULL || font0->WMode != scaled_font->WMode) { >+ code = gs_font_type0_from_cidfont(&font0, font, scaled_font->WMode, >+ &scale_matrix, font->memory); >+ if (code < 0) >+ return code; >+ pdsubf->u.cidfont.glyphshow_font_id = font0->id; >+ font0->WMode = scaled_font->WMode; /* should not be here? */ >+ } >+#else if (font0 == NULL) { > code = gs_font_type0_from_cidfont(&font0, font, font->WMode, > &scale_matrix, font->memory); > if (code < 0) > return code; > pdsubf->u.cidfont.glyphshow_font_id = font0->id; > } >+#endif > > /* Now handle the glyphshow as a show in the Type 0 font. */ > >diff -urNad src/gdevpdtt.c src/gdevpdtt.c >--- src/gdevpdtt.c 2006-08-20 13:55:04.000000000 +0900 >+++ src/gdevpdtt.c 2006-08-20 13:55:39.000000000 +0900 >@@ -1802,6 +1802,11 @@ > pwidths->Width.xy.y; > pwidths->Width.v.x = - pwidths->Width.xy.y / 2; > pwidths->Width.v.y = - pwidths->Width.xy.y; >+#if 1 /* XXX */ >+ /* pwidths->Width.v.y *= 0.84; should use ascent/descent ratio */ >+ pwidths->Width.v.y *= >+ cfont->FontBBox.q.y/(-cfont->FontBBox.p.y+cfont->FontBBox.q.y); >+#endif > } else { > pwidths->Width.xy.x = pwidths->real_width.xy.x = > finfo.MissingWidth * scale_c; >@@ -1880,8 +1885,39 @@ > > if (get_missing_width(cfont, 0, scale_c, &widths1) < 0) > v.x = 0; >+#if 1 /* XXX */ /* Adobe-Japan specific */ >+#define in_cid(s,e,cid,g) \ >+ ((gs_min_cid_glyph + cid) <= g && g <= (gs_min_cid_glyph + cid + e - s)) >+#define Roman(g) in_cid(0x20, 0x7e, 231, g) >+#define Hankaku(g) \ >+ (in_cid(0x20, 0x5f, 231, g) || in_cid(0x60, 0x60, 231, g) || \ >+ in_cid(0x61, 0x7e, 296, g) || in_cid(0x81, 0x85, 327, g) || \ >+ in_cid(0x86, 0x8f, 516, g) || in_cid(0x90, 0x90, 342, g) || \ >+ in_cid(0x91, 0x9f, 526, g) || in_cid(0xa1, 0xdf, 327, g) || \ >+ in_cid(0xe0, 0xfd, 541, g) || in_cid(0xfe, 0xff, 388, g)) >+#define Hiragana(g) \ >+ (in_cid(0x20, 0x20, 515, g) || in_cid(0x21, 0x25, 327, g) || \ >+ in_cid(0x26, 0x2f, 516, g) || in_cid(0x30, 0x30, 342, g) || \ >+ in_cid(0x31, 0x5d, 526, g) || in_cid(0x5e, 0x5f, 388, g) || \ >+ in_cid(0x60, 0x62, 571, g) || in_cid(0x66, 0x7e, 574, g)) >+ >+#define adobe_japan_ascii(fp, gly) \ >+ fp->FontType == ft_CID_TrueType && \ >+ ((gs_font_cid2*)fp)->cidata.common.CIDSystemInfo.Registry.size == 5 && \ >+ !memcmp(((gs_font_cid2*)fp)->cidata.common.CIDSystemInfo.Registry.data,"Adobe",5) && \ >+ ((gs_font_cid2*)fp)->cidata.common.CIDSystemInfo.Ordering.size == 6 && \ >+ !memcmp(((gs_font_cid2*)fp)->cidata.common.CIDSystemInfo.Ordering.data,"Japan1",6) && \ >+ (Roman(gly) || Hankaku(gly) || Hiragana(gly)) >+ >+ else { >+ v.x = widths1.Width.w / 2; >+ if (adobe_japan_ascii(ofont,glyph)) >+ v.x /= 2; >+ } >+#else > else > v.x = widths1.Width.w / 2; >+#endif > } else > v.x = pwidths->Width.v.x; > } else if (code < 0) >@@ -1903,6 +1939,21 @@ > > if (get_missing_width(cfont, 0, scale_c, &widths1) < 0) > v.x = 0; >+#if 1 /* XXX */ /* Adobe-Japan specific */ >+ else { >+ v.x = widths1.Width.w / 2; >+ if (adobe_japan_ascii(ofont,glyph)) >+ v.x /= 2; >+ } >+#undef in_cid >+#undef Roman >+#undef Hankaku >+#undef Hiragana >+#undef adobe_japan_ascii >+#else >+ else >+ v.x = widths1.Width.w / 2; >+#endif > } > } else { > if (info.members & (GLYPH_INFO_VVECTOR0 << wmode)) { >diff -urNad src/gstype42.c src/gstype42.c >--- src/gstype42.c 2006-08-20 13:55:04.000000000 +0900 >+++ src/gstype42.c 2006-08-20 13:55:39.000000000 +0900 >@@ -1,11 +1,3 @@ >-/* >- * Modified by AXE,Inc., BBR Inc. and Turbolinux Inc. >- * under the technical advice by suzuki toshiya (Hiroshima University) >- * For questions, please send mail to espgs8-cjk@printing-japan.org >- * >- * (C) Copyright 2006 Center of the International Cooperation for >- * Computerization >- */ > /* Copyright (C) 1996, 2000 Aladdin Enterprises. All rights reserved. > > This software is provided AS-IS with no warranty, either express or >@@ -154,6 +146,45 @@ > pfont->data.metrics[1].offset = offset; > pfont->data.metrics[1].length = (uint)u32(tab + 12); > } >+#if 1 /* XXXX */ >+ else if (!memcmp(tab, "mort", 4)) { >+ /* find vertical substitution */ >+ byte *mort; >+ >+ ACCESS(offset, 20, mort); /* length not accurate */ >+ if ((uint)u32(mort) == 0x00010000) { >+ int nChains, i; >+ ulong Chainp = 8; >+ >+ nChains = (int)u32(mort+4); >+ for (i=1; i <= nChains; i++) { >+ int nSub, j; >+ ulong Subp; >+ >+ nSub = U16(mort+Chainp+10); >+ Subp = Chainp + U16(mort+Chainp+8)*12 + 12; >+ for (j=1; j <= nSub; j++) { >+ if ((U16(mort+Subp+2)&7) == 4) { >+ if ((U16(mort+Subp+8) == 6) && >+ (U16(mort+Subp+10) == 4)) { >+ byte *ncgsv; >+ int cnt; >+ cnt = U16(mort+Subp+12); >+ ACCESS(offset+Subp+20, cnt*4, ncgsv); >+ if (!pfont->data.mort_ncgsv_off) { >+ pfont->data.mort_ncgsv_off = offset+Subp+20; >+ pfont->data.mort_ncgsv_len = cnt*4; >+ } else >+ dlprintf("multiple ncgsv ignored.\n"); >+ } >+ } >+ Subp += U16(mort+Subp); >+ } >+ Chainp += (int)u32(mort+Chainp+4); >+ } >+ } >+ } >+#endif > } > loca_size >>= pfont->data.indexToLocFormat + 1; > pfont->data.numGlyphs = (loca_size == 0 ? 0 : loca_size - 1); >@@ -175,6 +206,20 @@ > pfont->FontBBox.q.x = S16(head_box + 4) / upem; > pfont->FontBBox.q.y = S16(head_box + 6) / upem; > } >+#if 1 /* XXX */ >+ if (! pfont->data.metrics[1].offset) { >+ /* no vhea/vmtx >+ * shrink/expand the height to 1.0 >+ */ >+ float v; >+ v = - pfont->FontBBox.p.y + pfont->FontBBox.q.y; >+ pfont->FontBBox.p.y /= v; >+ pfont->FontBBox.q.y /= v; >+ >+ pfont->FontBBox.p.x /= v; >+ pfont->FontBBox.q.x /= v; >+ } >+#endif > #if NEW_TT_INTERPRETER > pfont->data.warning_patented = false; > pfont->data.warning_bad_instruction = false; >@@ -528,49 +573,6 @@ > origin.y + float2fixed(info.width[WMode].y)); > } > >-/* Get glyph bounding box from font file */ >-int >-gs_type42_glyph_fbbox(gs_font *font, uint glyph_index, gs_rect *pbbox) >-{ >- gs_font_type42 *const pfont = (gs_font_type42 *)font; >- gs_glyph_data_t glyph_data; >- double factor = 1.0 / pfont->data.unitsPerEm; >- int code = 0; >- const byte *gdata; >- >- if ((code = pfont->data.get_outline(pfont, glyph_index, &glyph_data)) < 0) { >- return code; /* non-existent glyph */ >- } >- if (glyph_data.bits.size == 0) { >- return 1; /* notdef */ >- } >- if (glyph_data.bits.size != 0 && S16(glyph_data.bits.data) == -1) { >- /* This is a composite glyph. */ >- uint flags; >- gs_matrix_fixed mat; >- >- gdata = glyph_data.bits.data + 10; >- memset(&mat, 0, sizeof(mat)); /* arbitrary */ >- do { >- uint comp_index = U16(gdata + 2); >- >- parse_component(&gdata, &flags, &mat, NULL, pfont, &mat); >- if (flags & TT_CG_USE_MY_METRICS) { >- code = gs_type42_glyph_fbbox(pfont, comp_index,pbbox); >- goto done; >- } >- } >- while (flags & TT_CG_MORE_COMPONENTS); >- } >- gdata = glyph_data.bits.data; >- pbbox->p.x = S16(gdata+2)*factor; >- pbbox->p.y = S16(gdata+4)*factor; >- pbbox->q.x = S16(gdata+6)*factor; >- pbbox->q.y = S16(gdata+8)*factor; >-done: >- gs_glyph_data_free(&glyph_data, "gs_type42_enumerate_glyph"); >- return code; >-} > /* Get glyph info by glyph index. */ > int > gs_type42_glyph_info_by_gid(gs_font *font, gs_glyph glyph, const gs_matrix *pmat, >diff -urNad src/gxfont42.h src/gxfont42.h >--- src/gxfont42.h 2006-08-20 13:55:04.000000000 +0900 >+++ src/gxfont42.h 2006-08-20 13:55:39.000000000 +0900 >@@ -1,11 +1,3 @@ >-/* >- * Modified by AXE,Inc., BBR Inc. and Turbolinux Inc. >- * under the technical advice by suzuki toshiya (Hiroshima University) >- * For questions, please send mail to espgs8-cjk@printing-japan.org >- * >- * (C) Copyright 2006 Center of the International Cooperation for >- * Computerization >- */ > /* Copyright (C) 1996, 2000, 2001 Aladdin Enterprises. All rights reserved. > > This software is provided AS-IS with no warranty, either express or >@@ -92,6 +84,13 @@ > bool warning_patented; > bool warning_bad_instruction; > #endif >+#if 1 /* XXXX */ >+ /* >+ * to find out glyph substitution >+ */ >+ uint mort_ncgsv_off; /* vertical substition entry offset */ >+ uint mort_ncgsv_len; /* total number of bytes (4*#) */ >+#endif > }; > #define gs_font_type42_common\ > gs_font_base_common;\ >@@ -138,9 +137,6 @@ > int gs_type42_get_outline_from_TT_file(gs_font_type42 * pfont, stream *s, uint glyph_index, > gs_glyph_data_t *pgd); > >-/* Export the function get glypf bounding box from font data */ >-int gs_type42_glyph_fbbox(gs_font *font, uint glyph_index, gs_rect *pbbox); >- > /* Export the font procedures so they can be called from the interpreter. */ > font_proc_enumerate_glyph(gs_type42_enumerate_glyph); > font_proc_glyph_info(gs_type42_glyph_info); >diff -urNad src/zcfont.c src/zcfont.c >--- src/zcfont.c 2006-08-20 13:55:04.000000000 +0900 >+++ src/zcfont.c 2006-08-20 13:55:39.000000000 +0900 >@@ -127,6 +127,10 @@ > if (code < 0) > return code; > } >+#if 1 /* XXX */ >+ if (scaled_font != root_font) >+ scaled_font->WMode = root_font->WMode; /* need for pdfwrite */ >+#endif > push(3); > make_int(op - 2, gs_text_current_char(penum) & 0xff); > make_real(op - 1, wpt.x); >diff -urNad src/zchar1.c src/zchar1.c >--- src/zchar1.c 2006-08-20 13:55:04.000000000 +0900 >+++ src/zchar1.c 2006-08-20 13:55:39.000000000 +0900 >@@ -1,12 +1,3 @@ >-/* >- * Modified by AXE,Inc., BBR Inc. and Turbolinux Inc. >- * under the technical advice by suzuki toshiya (Hiroshima University) >- * Based on bugfix by Hideo Saito, 2001. >- * For questions, please send mail to espgs8-cjk@printing-japan.org >- * >- * (C) Copyright 2006 Center of the International Cooperation for >- * Computerization >- */ > /* Copyright (C) 1993, 2000, 2002 Aladdin Enterprises. All rights reserved. > > This software is provided AS-IS with no warranty, either express or >@@ -249,7 +240,6 @@ > cxs.sbw[2] = 0; > cxs.sbw[3] = -penum->FontBBox_as_Metrics2.x; /* Sic! */ > cxs.use_FontBBox_as_Metrics2 = true; >- cxs.present = metricsSideBearingAndWidth; > } > /* Establish a current point. */ > code = gs_moveto(igs, 0.0, 0.0); >@@ -282,8 +272,7 @@ > const ref *opstr = op; > ref other_subr; > >- if (cxs.present == metricsSideBearingAndWidth >- && !cxs.use_FontBBox_as_Metrics2) { >+ if (cxs.present == metricsSideBearingAndWidth) { > gs_point sbpt; > > sbpt.x = cxs.sbw[0], sbpt.y = cxs.sbw[1]; >@@ -360,48 +349,11 @@ > } else { > /* We have the width and bounding box: */ > /* set up the cache device now. */ >- double w[2]; >- w[0] = pcxs->sbw[2], w[1] = pcxs->sbw[3]; >- >- if (pcxs->use_FontBBox_as_Metrics2) { >- /* In this case, we have to calculate width for WMode=0. >- pcxs->sbw[2, 3] is width for WMode=1. >- Normally, the width for WMode=0 is not used in WMode=1 >- rendering. However, if CDevProc is defined, >- the width for WMode=0 is used. >- Do the same as the case pcxs->present == metricsNone */ >- double sbw[4]; >- ref cnref; >- ref other_subr; >- int code; >- >- /* Since an OtherSubr callout might change osp, */ >- /* save the character name now. */ >- ref_assign(&cnref, op - 1); >- code = type1_continue_dispatch(i_ctx_p, pcxs, op, &other_subr, 4); >- op = osp; /* OtherSubrs might change it */ >- switch (code) { >- default: /* code < 0 or done, error */ >- return ((code < 0 ? code : >- gs_note_error(e_invalidfont))); >- case type1_result_callothersubr: /* unknown OtherSubr */ >- return type1_call_OtherSubr(i_ctx_p, pcxs, >- bbox_getsbw_continue, >- &other_subr); >- case type1_result_sbw: /* [h]sbw, done */ >- break; >- } >- type1_cis_get_metrics(pcis, sbw); >- w[0] = sbw[2], w[1] = sbw[3]; >- /* Now actual width is available, I can calculate much >- better side bearing for WMode 1 from the width. */ >- pcxs->sbw[0] = w[0] / 2; >- } > return zchar_set_cache(i_ctx_p, pbfont, op - 1, > (pcxs->present == metricsSideBearingAndWidth > && !pcxs->use_FontBBox_as_Metrics2 ? > pcxs->sbw : NULL), >- w, >+ pcxs->sbw + 2, > &pcxs->char_bbox, > cont, exec_cont, > (pcxs->use_FontBBox_as_Metrics2 ? pcxs->sbw : NULL)); >@@ -629,7 +581,7 @@ > code = type1_exec_init(&cxs.cis, penum, igs, pfont1); > if (code < 0) > return code; >- cxs.char_bbox = bbox; >+ cxs.char_bbox = pfont1->FontBBox; > code = type1exec_bbox(i_ctx_p, &cxs, pfont, exec_cont); > return code; > } >@@ -843,7 +795,6 @@ > int code; > gs_text_enum_t *penum = op_show_find(i_ctx_p); > gs_font *pfont; >- double w[2]; > > if ((code = gs_pathbbox(igs, &pcxs->char_bbox)) < 0 || > (code = font_param(op - 3, &pfont)) < 0 >@@ -856,24 +807,13 @@ > gs_font_type1 *const pfont1 = (gs_font_type1 *) pfont; > op_proc_t cont, exec_cont = 0; > >- if (pcxs->present == metricsNone >- || pcxs->use_FontBBox_as_Metrics2) { >+ if (pcxs->present == metricsNone) { > gs_point endpt; > > if ((code = gs_currentpoint(igs, &endpt)) < 0) > return code; >- /* We will not use sbw[3, 4]. >- If pcxs->use_FontBBox_as_Metrics2 is true, >- sbw[3, 4] are used as arguments(W1x, W1y) of setcachedevice2. >- We will use w[0, 1] as W0x and W0y of setcachedevice2. >- W0 and W1 is differrent parameters. Don't confuse. */ >- w[0] = endpt.x, w[1] = endpt.y; >+ pcxs->sbw[2] = endpt.x, pcxs->sbw[3] = endpt.y; > pcxs->present = metricsSideBearingAndWidth; >- if (pcxs->use_FontBBox_as_Metrics2) { >- /* Now actual width is available, I can calculate much >- better side bearing for WMode 1 from the width. */ >- pcxs->sbw[0] = w[0] / 2; >- } > } > /* > * We only need to rebuild the path from scratch if we might >@@ -890,7 +830,7 @@ > } else { > cont = (pbfont->PaintType == 0 ? nobbox_fill : nobbox_stroke), exec_cont = 0; > code = zchar_set_cache(i_ctx_p, pbfont, op - 1, NULL, >- w, >+ pcxs->sbw + 2, > &pcxs->char_bbox, > cont, &exec_cont, > (pcxs->use_FontBBox_as_Metrics2 ? pcxs->sbw : NULL)); >diff -urNad src/zchar42.c src/zchar42.c >--- src/zchar42.c 2006-08-20 13:55:04.000000000 +0900 >+++ src/zchar42.c 2006-08-20 13:55:39.000000000 +0900 >@@ -1,12 +1,3 @@ >-/* >- * Modified by AXE,Inc., BBR Inc. and Turbolinux Inc. >- * under the technical advice by suzuki toshiya (Hiroshima University) >- * Based on bugfix by Masatake Yamato and Hideo Saito, 2001. >- * For questions, please send mail to espgs8-cjk@printing-japan.org >- * >- * (C) Copyright 2006 Center of the International Cooperation for >- * Computerization >- */ > /* Copyright (C) 1996, 1997, 1998, 1999 Aladdin Enterprises. All rights reserved. > > This software is provided AS-IS with no warranty, either express or >@@ -53,15 +44,8 @@ > { double sbw[4]; > double w[2]; > int present; >- gs_rect bbox, *pbbox; >- int code = gs_type42_glyph_fbbox(pbfont, glyph_index, &bbox); >+ int code = zchar_get_metrics(pbfont, cnref, sbw); > >- if (code != 0) { >- pbbox = &pbfont->FontBBox; >- } else { >- pbbox = &bbox; >- } >- code = zchar_get_metrics(pbfont, cnref, sbw); > if (code < 0) > return code; > present = code; >@@ -91,7 +75,7 @@ > } > } else { > sbw[0] = sbw[2] / 2; >- sbw[1] = pbbox->q.y - sbw42[1]; >+ sbw[1] = (pbfont->FontBBox.q.y + pbfont->FontBBox.p.y - sbw42[3]) / 2; > sbw[2] = sbw42[2]; > sbw[3] = sbw42[3]; > } >@@ -103,7 +87,7 @@ > return zchar_set_cache(i_ctx_p, pbfont, cnref, > (put_lsb && present == metricsSideBearingAndWidth ? > sbw : NULL), >- w, pbbox, >+ w, &pbfont->FontBBox, > cont, exec_cont, > gs_rootfont(igs)->WMode ? sbw : NULL); > } >diff -urNad src/zfcid1.c src/zfcid1.c >--- src/zfcid1.c 2006-08-20 13:55:04.000000000 +0900 >+++ src/zfcid1.c 2006-08-20 13:55:39.000000000 +0900 >@@ -35,6 +35,10 @@ > #include "stream.h" > #include "files.h" > >+#if 1 /* XXXX */ >+private uint z11_find_repl_glyph(gs_font_cid2 *, uint); >+#endif >+ > /* ---------------- CIDFontType 1 (FontType 10) ---------------- */ > > /* <string|name> <font_dict> .buildfont10 <string|name> <font> */ >@@ -67,6 +71,28 @@ > > /* ------ Accessing ------ */ > >+/* Replace a glyph with a vertical substitution */ >+private uint >+z11_find_repl_glyph(gs_font_cid2 *pfont, uint glyph) >+{ >+ int i; >+ const byte *data; >+ >+ if (pfont->data.mort_ncgsv_off == 0) >+ return glyph; >+ >+ if ((*pfont->data.string_proc)((gs_font_type42*)pfont, >+ (ulong)pfont->data.mort_ncgsv_off, >+ pfont->data.mort_ncgsv_len, &data) == 0) { >+ for (i=0; i < pfont->data.mort_ncgsv_len; i += 4) { >+ if (((data[i]<<8)+data[i+1]) == glyph) { >+ return (uint)((data[i+2]<<8)+data[i+3]); >+ } >+ } >+ } >+ return glyph; >+} >+ > /* Map a glyph CID to a TrueType glyph number using the CIDMap. */ > private int > z11_CIDMap_proc(gs_font_cid2 *pfont, gs_glyph glyph) >@@ -107,6 +133,43 @@ > } > for (i = 0; i < gdbytes; ++i) > gnum = (gnum << 8) + data[i]; >+#if 1 /* XXXX */ >+ if ( gnum != 0 && >+ pfont->cidata.common.CIDSystemInfo.Registry.size == 5 && >+ !memcmp(pfont->cidata.common.CIDSystemInfo.Registry.data,"Adobe",5) && >+ pfont->cidata.common.CIDSystemInfo.Ordering.size == 6 && >+ !memcmp(pfont->cidata.common.CIDSystemInfo.Ordering.data,"Japan1",6)) { >+ uint gnum0 = gnum; >+ >+ /* ps string represented in EUC/ShiftJIS are mapped to CID string, >+ * while certain characters (e.g. 0xa1c4) are mapped to different CID >+ * (668 or 7897) depending on WMode(0 or 1). >+ * But, when CID characters are mapped to ShiftJIS/Unicode to get >+ * corresponding TTF glyphs, certain CID characters are mapped to >+ * glyphs valid for horizonal writing >+ * (there is no choice in ShiftJIS encoded TTF), using Resource/CMap >+ * >+ * Following code maps certain CID (for vertical writing chars) >+ * to glyphs for vertical writing regardless of WMode! >+ * This automatic mapping enables generating PDF of vertical writing. >+ * >+ * fixme: range correct? >+ */ >+ if (7887 <= cid && cid <= 7960) { >+ /* substitute a glyph for vertical writing cid character */ >+ gnum = z11_find_repl_glyph(pfont, gnum); >+ } >+ if (gnum != gnum0) { >+ if (gs_debug_c('J')) >+ dlprintf3("[J]z11_CIDMap_proc(): cid:%d -> %d -> %d\n", >+ cid, gnum0, gnum); >+ } else if (gs_debug_c('J')) { >+ dlprintf2("[J]z11_CIDMap_proc(): cid:%d -> %d\n", cid, gnum); >+ } >+ } else if (gs_debug_c('J')) { >+ dlprintf2("[J]z11_CIDMap_proc(): cid:%d -> %d\n", cid, gnum); >+ } >+#endif > return gnum; > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 144769
:
94919
| 94920 |
94921