diff options
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/pdf/pdfglyph.w')
-rw-r--r-- | Build/source/texk/web2c/luatexdir/pdf/pdfglyph.w | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/Build/source/texk/web2c/luatexdir/pdf/pdfglyph.w b/Build/source/texk/web2c/luatexdir/pdf/pdfglyph.w index ea2077f68b6..6eb6d9fc5b2 100644 --- a/Build/source/texk/web2c/luatexdir/pdf/pdfglyph.w +++ b/Build/source/texk/web2c/luatexdir/pdf/pdfglyph.w @@ -19,8 +19,8 @@ @ @c static const char _svn_version[] = - "$Id: pdfglyph.w 3584 2010-04-02 17:45:55Z hhenkel $" - "$URL: http://foundry.supelec.fr/svn/luatex/branches/0.60.x/source/texk/web2c/luatexdir/pdf/pdfglyph.w $"; + "$Id: pdfglyph.w 3703 2010-05-27 07:58:34Z taco $" + "$URL: http://foundry.supelec.fr/svn/luatex/tags/beta-0.60.2/source/texk/web2c/luatexdir/pdf/pdfglyph.w $"; #include "ptexlib.h" @@ -107,13 +107,13 @@ static void print_tm(PDF pdf, pdffloat * tm) } @ @c -static void set_textmatrix(PDF pdf, scaledpos pos) +static void set_textmatrix(PDF pdf, scaledpos pos, boolean force) { boolean move; pdfstructure *p = pdf->pstruct; assert(is_textmode(p)); move = calc_pdfpos(p, pos); - if (move == TRUE) { + if (force || move) { print_tm(pdf, p->tm); p->pdf.h.m = p->pdf_bt_pos.h.m + p->tm[4].m; /* Tm replaces */ p->pdf.v.m = p->pdf_bt_pos.v.m + p->tm[5].m; @@ -181,25 +181,27 @@ void pdf_place_glyph(PDF pdf, internal_font_number f, int c) pdf_goto_textmode(pdf); if (f != pdf->f_cur) setup_fontparameters(pdf, f); - if (p->f_pdf != p->f_pdf_cur || p->fs.m != p->fs_cur.m) + if (p->f_pdf != p->f_pdf_cur || p->fs.m != p->fs_cur.m) { set_font(pdf); - set_textmatrix(pdf, pos); + set_textmatrix(pdf, pos, true); /* force Tm setting */ + } else + set_textmatrix(pdf, pos, false); begin_chararray(pdf); } assert(is_charmode(p) || is_chararraymode(p)); move = calc_pdfpos(p, pos); - if (move == TRUE) { + if (move) { if ((p->wmode == WMODE_H && (p->pdf_bt_pos.v.m + p->tm[5].m) != p->pdf.v.m) || (p->wmode == WMODE_V && (p->pdf_bt_pos.h.m + p->tm[4].m) != p->pdf.h.m) || abs(p->tj_delta.m) >= 1000000) { pdf_goto_textmode(pdf); - set_textmatrix(pdf, pos); + set_textmatrix(pdf, pos, false); begin_chararray(pdf); move = calc_pdfpos(p, pos); } - if (move == TRUE) { + if (move) { assert((p->wmode == WMODE_H && (p->pdf_bt_pos.v.m + p->tm[5].m) == p->pdf.v.m) || (p->wmode == WMODE_V |