I’m trying to write a script that will shift a glyph so that the _anchor will be at x=0 (in an italic font), I thought it was as simple as the following but I realise I don’t understand how the bounding box is shifting in an italic font.
def italicSkew( x, y, angle=10.0 ):
"""Skews x/y along the x axis and returns skewed x value."""
new_angle = ( angle / 180.0 ) * math.pi
return x + y * math.tan( new_angle )
import math
def italicize( thisPoint, italicAngle=0.0, pivotalY=0.0 ):
"""
Returns the italicized position of an NSPoint 'thisPoint'
for a given angle 'italicAngle' and the pivotal height 'pivotalY',
around which the italic slanting is executed, usually half x-height.
Usage: myPoint = italicize(myPoint,10,xHeight*0.5)
"""
x = thisPoint.x
yOffset = thisPoint.y - pivotalY # calculate vertical offset
italicAngle = math.radians( italicAngle ) # convert to radians
tangens = math.tan( italicAngle ) # math.tan needs radians
horizontalDeviance = tangens * yOffset # vertical distance from pivotal point
x += horizontalDeviance # x of point that is yOffset from pivotal point
return NSPoint( x, thisPoint.y )