Heiko Oberdiek wrote:
On Tue, Nov 01, 2011 at 12:04:28PM +0100, Patrick Gundlach wrote:
Am 01.11.2011 um 10:03 schrieb Arno Trautmann:

p.s.: as I'm already writing about silly manipulations, I have two more 
?useless? questions:
? I want to rotate a page after it has been completed. Could anyone give me a 
hint where to start for this? (callbacks, how to rotate a box? ?)
? I'd like to rotate single glyphs by an arbitrary angle. Is this possible with 
Lua code, after line breaking? Or would I have to create a new font for that?

You can insert a whatsit/pdf_literal node before and after the glyph/box
you want to rotate. IIRC the "cm" operator (use with q...Q) does exactly
what you want.

Where can I look up how to use that operator? By trial and error I was able to “transform” a L to an inverse Γ by mirroring in both directions and shifting, but the shifts are arbitrary numbers to me. I did:

"q -1 0 0 -1 6 6 cm"

and added this in a pdf_literal before a glyph and a "Q" after the glyph. However, the following glyph then overwrote that glyph, i.e. the position after the transformation was wrong. I guess that is what Heiko suggests by saying:

I would prefer pdf_save+pdf_setmatrix ... pdf_restore.

As I have no idea what exactly those do (the documentation is not too verbose at that point …), I tried to insert them before and after the glyph. But as soon as I insert a pdf_setmatrix node, the rest of the input is ignored, no matter what .data I define. So: how are they used?

Using
pdf_setmatrix gives LuaTeX the chance to calculate correct
values for destinations and annotations. A rotation using
\rotatebox{...} with pdftex.def gives an example.

There's no \rotatebox in pdftex.def, neither a \Grot@box@kv or anything. But I guess that's not what you meant?

(In especially
the rotation is done without moving TeX's position to avoid
that TeX's position management gets out of sync with the
PDF position after the rotation.

And that is what happens with Patrick's solution, right?

Thank you all,

cheers
Arno

Reply via email to