diff options
| -rw-r--r-- | def.go | 4 | ||||
| -rw-r--r-- | fpdf.go | 9 | ||||
| -rw-r--r-- | fpdf_test.go | 23 | ||||
| -rw-r--r-- | pdf/reference/Fpdf_UnderlineThickness.pdf | bin | 0 -> 1156 bytes | 
4 files changed, 34 insertions, 2 deletions
@@ -452,6 +452,7 @@ type Pdf interface {  	SetTextSpotColor(nameStr string, tint byte)  	SetTitle(titleStr string, isUTF8 bool)  	SetTopMargin(margin float64) +	SetUnderlineThickness(thickness float64)  	SetXmpMetadata(xmpStream []byte)  	SetX(x float64)  	SetXY(x, y float64) @@ -595,7 +596,8 @@ type Fpdf struct {  		// Composite values of colors  		draw, fill, text colorType  	} -	spotColorMap map[string]spotColorType // Map of named ink-based colors +	spotColorMap           map[string]spotColorType // Map of named ink-based colors +	userUnderlineThickness float64                  // A custom user underline thickness multiplier.  }  type encType struct { @@ -202,6 +202,7 @@ func fpdfNew(orientationStr, unitStr, sizeStr, fontDirStr string, size SizeType)  	f.layerInit()  	f.catalogSort = gl.catalogSort  	f.creationDate = gl.creationDate +	f.userUnderlineThickness = 1  	return  } @@ -3538,10 +3539,16 @@ func blankCount(str string) (count int) {  	return  } +// SetUnderlineThickness accepts a multiplier for adjusting the text underline +// thickness, defaulting to 1. See SetUnderlineThickness example. +func (f *Fpdf) SetUnderlineThickness(thickness float64) { +	f.userUnderlineThickness = thickness +} +  // Underline text  func (f *Fpdf) dounderline(x, y float64, txt string) string {  	up := float64(f.currentFont.Up) -	ut := float64(f.currentFont.Ut) +	ut := float64(f.currentFont.Ut) * f.userUnderlineThickness  	w := f.GetStringWidth(txt) + f.ws*float64(blankCount(txt))  	return sprintf("%.2f %.2f %.2f %.2f re f", x*f.k,  		(f.h-(y-up/1000*f.fontSize))*f.k, w*f.k, -ut/1000*f.fontSizePt) diff --git a/fpdf_test.go b/fpdf_test.go index c6020f3..43cea30 100644 --- a/fpdf_test.go +++ b/fpdf_test.go @@ -2688,3 +2688,26 @@ func ExampleFpdf_RoundedRect() {  	// Output:  	// Successfully generated pdf/Fpdf_RoundedRect.pdf  } + +// ExampleFpdf_SetUnderlineThickness demonstrates how to adjust the text +// underline thickness. +func ExampleFpdf_SetUnderlineThickness() { +	pdf := gofpdf.New("P", "mm", "A4", "") // 210mm x 297mm +	pdf.AddPage() +	pdf.SetFont("Arial", "U", 12) + +	pdf.SetUnderlineThickness(0.5) +	pdf.CellFormat(0, 10, "Thin underline", "", 1, "", false, 0, "") + +	pdf.SetUnderlineThickness(1) +	pdf.CellFormat(0, 10, "Normal underline", "", 1, "", false, 0, "") + +	pdf.SetUnderlineThickness(2) +	pdf.CellFormat(0, 10, "Thicker underline", "", 1, "", false, 0, "") + +	fileStr := example.Filename("Fpdf_UnderlineThickness") +	err := pdf.OutputFileAndClose(fileStr) +	example.Summary(err, fileStr) +	// Output: +	// Successfully generated pdf/Fpdf_UnderlineThickness.pdf +} diff --git a/pdf/reference/Fpdf_UnderlineThickness.pdf b/pdf/reference/Fpdf_UnderlineThickness.pdf Binary files differnew file mode 100644 index 0000000..49ad9b1 --- /dev/null +++ b/pdf/reference/Fpdf_UnderlineThickness.pdf  | 
