Hi Tadziu! At 2023-06-13T17:11:50+0200, Tadziu Hoffmann wrote: > > I think the likeliest site to fix PDF output is the `pdf:SS` > > macro in pdf.tmac. > > You are right. > > This works: > > .de pdf:SS > .char \\$1 \s'\\\\n[.ps]u*89u/100u'\S'15'\\$1\S'0'\s'0' > .. > .pdf:SS \[*a] > .pdf:SS \[*b]
Good show! The extra escaping on the interpolation of the .ps register is a subtle--and necessary--point. The source calls the RHS of character definitions "macros" and they truly are. I don't think we're _quite_ there, though; we need to contrive italic corrections too, which seems like it would be harder without a real font,[1] since they vary by glyph. See the attachments. Another issue I _was_ worried about is that using \s clobbers the "previous type size" bit of internal state. But a quick experiment seems to suggest that it's not a problem--or I didn't manage to provoke it. We've seen people get tripped up using \f[] or `.ft P` after a macro call, for example, not realizing that the macro they just called itself performed some font changes. This situation is altogether more subtle because a character _is_ a macro definition. Users are not going to foresee that. But, if no one else can make this scenario fail to produce the right type size, then I'm happy. Regards, Branden [1] Well, maybe not. We can hand roll 24 italic corrections and pass them as second arguments to this `pdf:SS` macro. It can interpolate them as \h'' horizontal motions after interpolating `\$1`. Might be a good idea to express the corrections in ems so they'll scale on their own.
signature.asc
Description: PGP signature