This is part of the old website. New website begins at fontforge.github.io
Are you a web developer? Help us migrate this page on Github
This dialog is available in the font, outline and metrics views. In the font view it applies to all selected glyphs. In the outline view if there is a selection then it applies to that. if there is no selection then it applies to the entire glyph.
You may choose whether you want the transformation to be centered at the glyph's origin, the center of the selection (or of the glyph as a whole if there is no selection), or the location of the last point on which you clicked the mouse.
You may apply several different transformations at once:
If you are in the font view, and if Copy From is set to all fonts, then the transformation will also be applied to the bitmaps. Not all of these transforms can be mapped to ones on the bitmap font (arbitrary rotations, scales, etc. do not map). Only rotations by 90 degrees, flips, skews and moves will be approximated on the bitmap glyphs.
If you are in the font view, then any pair-wise kerning information whose first glyph is selected will be scaled (but not translated) by the transformation matrix. Similarly and simple positioning features that apply to a selected glyph will be transformed by the matrix (but again not translated). You may choose to scale kerning classes as well.
If you are in the font view or the outline view and there is no selection (and you are in the foreground) there is a "[] Transform Background Too" check box. If you check this then anything in the background will be transformed with the foreground.
If you check [] Round to Int then after the transformation has been applied everything will be rounded to an integer value.
Transformations in the Outline glyph view are not applied to any bitmaps. (Nor are transformations in the bitmap window mapped back to the outline).
Non-linear transformations are defined by providing two expressions, one of which results in the transformed value for the X coordinate, the other provides the y coordinate. In the example at right:
x' = 5·x^{2} + x + 3·sin(y)
y' = y
Expressions may be made up of the usual C operators: "+", "-", "*", "/", "%", "!", "==", "<", ">", "<=", ">=", "!=", "&&", "||" and "? :" as well as "^" which means "raise to the power of". They may also contain the standard functions: "log", "exp", "sqrt", "sin", "cos", "tan", "atan2", "abs", "rint", "floor", "ceil".
Note: In non-linear transformations the result is only an approximation to the correct result (A linear transformation will transform a cubic spline to another cubic spline. A non-linear transformation may not).
I have a hard time describing this. There are three different coordinate systems involved. There is the (2D) coordinate system in which your glyph has been drawn. There is a 3D coordinate system in which we embed it, and finally there is another 2D coordinate system onto which we project it.
Assume your eye is at the origin of 3 space, and you are looking up along the Z axis. Assume that the plane in which your glyph has been drawn is tilted by an angle theta (from the XY plane in 3 space) and the intersection between the Z axis and the drawing plane is z units along the Z axis. Assume that the projection plane is parallel to the XY plane and is at a distance d along the Z axis.
Then for each point in the glyph we draw a line between that point and your eye (which is at the origin). The location where that line intersects the projection plane is the transformed location of that point. Again the result is only an approximation.
The Point Of View dialog gives you a little more freedom than is described above. It allows you to set the location of the eye (instead of fixing it at the origin), and allows you to change in what direction the vanishing point will lie (instead of fixing it on the y axis).
The dialog also calculates the location of the vanishing point as you change fields (Note: It cannot figure out meta information like "Center of Selection", so whenever the eye is positioned with this value, it just assumes a value of 0 for that coordinate.