[gs-cvs] gs/src
Igor Melichev
igor at casper.ghostscript.com
Sat Aug 3 08:50:53 PDT 2002
Update of /cvs/ghostscript/gs/src
In directory casper:/tmp/cvs-serv6387/gs/src
Modified Files:
zfapi.c
Log Message:
FAPI project : WMode 1 was wrongly processed for base fonts.
Index: zfapi.c
===================================================================
RCS file: /cvs/ghostscript/gs/src/zfapi.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- zfapi.c 9 Jul 2002 14:55:03 -0000 1.22
+++ zfapi.c 3 Aug 2002 15:50:51 -0000 1.23
@@ -1067,7 +1067,7 @@
int oversampling_x, oversampling_y;
double FontMatrix_div = (bCID && bIsType1GlyphData && font_file_path == NULL ? 1000 : 1);
bool bVertical = (gs_rootfont(igs)->WMode != 0);
- double sbw[4] = {0, 0}, vsbw[4], *pvsbw = NULL;
+ double sbw[4] = {0, 0};
double em_scale_x, em_scale_y;
gs_rect char_bbox;
int code;
@@ -1257,34 +1257,47 @@
}
}
compute_em_scale(pbfont, &metrics, FontMatrix_div, &em_scale_x, &em_scale_y);
- code = zchar_get_metrics(pbfont, &char_name, sbw);
- if ((code = code) < 0)
- return code;
- if (code == metricsNone) {
- sbw[2] = metrics.escapement / em_scale_x;
- sbw[3] = 0;
- if (pbfont->FontType == 2) {
- gs_font_type1 *pfont1 = (gs_font_type1 *)pbfont;
- sbw[2] += fixed2float(pfont1->data.defaultWidthX);
- }
- } else {
- if ((code = zchar_get_metrics(pbfont, op, sbw)) < 0)
- return code;
- }
char_bbox.p.x = metrics.bbox_x0 / em_scale_x;
char_bbox.p.y = metrics.bbox_y0 / em_scale_y;
char_bbox.q.x = metrics.bbox_x1 / em_scale_x;
char_bbox.q.y = metrics.bbox_y1 / em_scale_y;
+
if (bVertical) {
- vsbw[0] = sbw[2] / 2;
- vsbw[1] = pbfont->FontBBox.q.y;
- vsbw[2] = 0;
- vsbw[3] = - pbfont->FontBBox.q.x; /* Sic ! */
- pvsbw = vsbw;
+ double pwv[4];
+ code = zchar_get_metrics2(pbfont, &char_name, pwv);
+ if (code < 0)
+ return code;
+ if (code == metricsNone) {
+ if (bCID) {
+ sbw[0] = sbw[2] / 2;
+ sbw[1] = pbfont->FontBBox.q.y;
+ sbw[2] = 0;
+ sbw[3] = - pbfont->FontBBox.q.x; /* Sic ! */
+ } else
+ bVertical = false;
+ } else {
+ sbw [0] = pwv[2];
+ sbw [1] = pwv[3];
+ sbw [2] = pwv[0];
+ sbw [3] = pwv[1];
+ }
+ }
+ if (!bVertical) {
+ code = zchar_get_metrics(pbfont, &char_name, sbw);
+ if (code < 0)
+ return code;
+ if (code == metricsNone) {
+ sbw[2] = metrics.escapement / em_scale_x;
+ sbw[3] = 0;
+ if (pbfont->FontType == 2) {
+ gs_font_type1 *pfont1 = (gs_font_type1 *)pbfont;
+ sbw[2] += fixed2float(pfont1->data.defaultWidthX);
+ }
+ }
}
code = zchar_set_cache(i_ctx_p, pbfont, &char_name,
NULL, sbw + 2, &char_bbox,
- fapi_finish_render, fapi_finish_render, pvsbw);
+ fapi_finish_render, fapi_finish_render, sbw);
if (code != 0) {
if (code < 0) {
/* An error */
More information about the gs-cvs
mailing list