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  }