From 5cb8bab84fe08b93191ed0385c016592d2ac7cc4 Mon Sep 17 00:00:00 2001 From: hyzgh <31174102+hyzgh@users.noreply.github.com> Date: Tue, 20 Aug 2019 19:50:37 +0800 Subject: fix split line bug Change-Id: I224a7ec1af8386dcbef757c76389fb88316401bc --- fpdf.go | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'fpdf.go') diff --git a/fpdf.go b/fpdf.go index 747346f..7c53811 100644 --- a/fpdf.go +++ b/fpdf.go @@ -2551,20 +2551,23 @@ func (f *Fpdf) MultiCell(w, h float64, txtStr, borderStr, alignStr string, fill } wmax := int(math.Ceil((w - 2*f.cMargin) * 1000 / f.fontSize)) s := strings.Replace(txtStr, "\r", "", -1) + srune := []rune(s) + // remove extra line breaks var nb int if f.isCurrentUTF8 { - nb = len([]rune(s)) - for nb > 0 && []rune(s)[nb-1] == '\n' { + nb = len(srune) + for nb > 0 && srune[nb-1] == '\n' { nb-- - s = string([]rune(s)[0:nb]) } + srune = srune[0:nb] } else { nb = len(s) - if nb > 0 && []byte(s)[nb-1] == '\n' { + bytes2 := []byte(s) + for nb > 0 && bytes2[nb-1] == '\n' { nb-- - s = s[0:nb] } + s = s[0:nb] } // dbg("[%s]\n", s) var b, b2 string @@ -2603,7 +2606,7 @@ func (f *Fpdf) MultiCell(w, h float64, txtStr, borderStr, alignStr string, fill if f.isCurrentUTF8 { c = srune[i] } else { - c = rune(byte(s[i])) + c = rune(s[i]) } if c == '\n' { // Explicit line break @@ -2636,7 +2639,7 @@ func (f *Fpdf) MultiCell(w, h float64, txtStr, borderStr, alignStr string, fill } continue } - if c == ' ' { + if c == ' ' || isChinese(c) { sep = i ls = l ns++ -- cgit v1.2.1-24-ge1ad