github.com/signintech/pdft@v0.5.0/minigopdf/strhelper.go (about) 1 package gopdf 2 3 import ( 4 "math/big" 5 "strings" 6 ) 7 8 // StrHelperGetStringWidth get string width 9 func StrHelperGetStringWidth(str string, fontSize int, ifont IFont) float64 { 10 w := 0 11 bs := []byte(str) 12 i := 0 13 max := len(bs) 14 for i < max { 15 w += ifont.GetCw()[bs[i]] 16 i++ 17 } 18 return float64(w) * (float64(fontSize) / 1000.0) 19 } 20 21 // CreateEmbeddedFontSubsetName create Embedded font (subset font) name 22 func CreateEmbeddedFontSubsetName(name string) string { 23 name = strings.Replace(name, " ", "+", -1) 24 name = strings.Replace(name, "/", "+", -1) 25 return name 26 } 27 28 // ReadShortFromByte read short from byte array 29 func ReadShortFromByte(data []byte, offset int) (int64, int) { 30 buff := data[offset : offset+2] 31 num := big.NewInt(0) 32 num.SetBytes(buff) 33 u := num.Uint64() 34 var v int64 35 if u >= 0x8000 { 36 v = int64(u) - 65536 37 } else { 38 v = int64(u) 39 } 40 return v, 2 41 } 42 43 // ReadUShortFromByte read ushort from byte array 44 func ReadUShortFromByte(data []byte, offset int) (uint64, int) { 45 buff := data[offset : offset+2] 46 num := big.NewInt(0) 47 num.SetBytes(buff) 48 return num.Uint64(), 2 49 }