[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to prevent ly:stencil-rotate to modify dimensions

From: Torsten Hämmerle
Subject: Re: How to prevent ly:stencil-rotate to modify dimensions
Date: Sun, 11 Mar 2018 10:02:07 -0700 (MST)

Hi Harm,

Thanks for the background information, that'd be a valuable improvement.

Thomas Morley-2 wrote
> Using your code with the following example:
> \markup
>   \override #'(box-padding . 0)
>   \box
>   \override #'(slant-angle . 40)
>   \slanted
>   \musicglyph #"clefs.G"
> results in a not matching boundingbox as well.

Yes, I know, but this code was meant for text in the first place and it's
quite common for slanted characters to stick out of their bounding boxes to
the left to the right. Unfortunately, there are no slanted bounding boxes
(the are always upright"
But the main reason behind is that 
\slanted "one two three" 
should give the same result as 
\slanted { "one" "two" "three" }
and when separately applying \slanted to "one", "two", and "three", a
widened box would lead to a wider spacing.

Thomas Morley-2 wrote
> With '(slant-angle . 70) it produces an error:

Yes, this is due to a mathematical problem (slant-angle must be less than
I didn't catch the exception and a slant angle beyond 20° seems questionable
from a typographical point of view, anyway.
Moreover, typographically, these automated and artificial font manipulations
are getting worse as the effect increases.

Slant angles above 45°, can be achieved by an extended version that calls
the code twice for a smaller angle.
The trigonometric functions are used here the keep proportions right (same
width, same height after slanting) - in most other situations one may get
away without this kind of calculations. 

Probably it'd be a good idea to provide a handy new markup command that can
shear an arbitrary graphical object by any angle (approaching 90° will
result in an infinite width, though) that also adapts the bounding box...

All the best,

Sent from:

reply via email to

[Prev in Thread] Current Thread [Next in Thread]