Units

Units

The basic typesetting unit is a “scaled point” (sp) and the Go type is bag.ScaledPoint. One DTP point (1/72 inch) consists of 65535 scaled points. There are two methods (bag.SP() and bag.MustSP()) to convert from other units to sp.

The known units are

Name Unit
pt (DTP point) There are 65535 scaled points in one DTP point. For conversion, always use the constant bag.Factor and never the value 65535 itself, as it is subject to change.
in Inch – 72 DTP points are one inch.
mm Millimeter (1/1000 of one meter)
cm Centimeter (1/100 of one meter)
m Meter
px Pixel - 96 Pixes are one inch
pc Pica – twelve DTP points or 1/6 inch

Conversion

These two functions convert strings such as "1cm" or "12.4in" to scaled points. The MustSP function panics if it cannot convert the unit.

To convert from scaled points to other units use

func (s ScaledPoint) ToUnit(unit string) (float64, error)

For example

twelvept := bag.MustSP("12pt")
twelveFloat, err := twelvept.ToUnit("pt")
// twelveFloat = 12.0

To convert to DTP points use

func (s ScaledPoint) ToPT() float64

Convenience functions

There are a few convenience functions:

func Max(a, b ScaledPoint) ScaledPoint
func Min(a, b ScaledPoint) ScaledPoint

and

func MultiplyFloat(a ScaledPoint, f float64) ScaledPoint

if you need to multiply a scaled point with a float.

String

The ScaledPoint type implements the Stringer interface which returns a string suitable for the PDF file.