Improve icon rendering: fix scaling and centering for emoji, FontAwesome, and SVG icons
This commit is contained in:
parent
cdb30bec3f
commit
56a5cb5bba
5
cbdt.go
5
cbdt.go
@ -175,9 +175,12 @@ func renderCBDTGlyph(r rune, targetSize int, scale float64) (image.Image, bool)
|
||||
raw := emojiCBDT.imgs[idx]
|
||||
|
||||
displaySize := int(float64(targetSize) * scale)
|
||||
if displaySize < 1 {
|
||||
if displaySize > targetSize {
|
||||
displaySize = targetSize
|
||||
}
|
||||
if displaySize < 1 {
|
||||
displaySize = 1
|
||||
}
|
||||
|
||||
scaled := raw
|
||||
if raw.Bounds().Dx() != displaySize || raw.Bounds().Dy() != displaySize {
|
||||
|
||||
@ -115,11 +115,14 @@ func renderFAGlyph(style faStyle, name string, size int, scale float64) (image.I
|
||||
|
||||
rgba := image.NewRGBA(image.Rect(0, 0, size, size))
|
||||
|
||||
offX := (size - int(fontSize)) / 2
|
||||
adv := font.MeasureString(face, string(cp)).Ceil()
|
||||
offX := (size - adv) / 2
|
||||
if offX < 0 {
|
||||
offX = size / 8
|
||||
offX = 0
|
||||
}
|
||||
baselineY := size * 7 / 10
|
||||
|
||||
metrics := face.Metrics()
|
||||
baselineY := (size + metrics.Ascent.Ceil() - metrics.Descent.Ceil()) / 2
|
||||
|
||||
d := font.Drawer{
|
||||
Dst: rgba,
|
||||
|
||||
12
icons.go
12
icons.go
@ -153,12 +153,12 @@ func svgToPNG(svgPath string, targetSize int, scale float64) (image.Image, error
|
||||
scale = 0.55
|
||||
}
|
||||
|
||||
renderSize := targetSize
|
||||
if scale < 1 {
|
||||
renderSize = int(float64(targetSize) * scale)
|
||||
if renderSize < 1 {
|
||||
renderSize = 1
|
||||
}
|
||||
renderSize := int(float64(targetSize) * scale)
|
||||
if renderSize > targetSize {
|
||||
renderSize = targetSize
|
||||
}
|
||||
if renderSize < 1 {
|
||||
renderSize = 1
|
||||
}
|
||||
|
||||
cmd := exec.Command("rsvg-convert",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user