git.sr.ht/~pingoo/stdx@v0.0.0-20240218134121-094174641f6e/barcode/qr/unicode.go (about) 1 package qr 2 3 import ( 4 "errors" 5 6 "git.sr.ht/~pingoo/stdx/barcode/utils" 7 ) 8 9 func encodeUnicode(content string, ecl ErrorCorrectionLevel) (*utils.BitList, *versionInfo, error) { 10 data := []byte(content) 11 12 vi := findSmallestVersionInfo(ecl, byteMode, len(data)*8) 13 if vi == nil { 14 return nil, nil, errors.New("To much data to encode") 15 } 16 17 // It's not correct to add the unicode bytes to the result directly but most readers can't handle the 18 // required ECI header... 19 res := new(utils.BitList) 20 res.AddBits(int(byteMode), 4) 21 res.AddBits(len(content), vi.charCountBits(byteMode)) 22 for _, b := range data { 23 res.AddByte(b) 24 } 25 addPaddingAndTerminator(res, vi) 26 return res, vi, nil 27 }