Improve icon rendering: fix scaling and centering for emoji, FontAwesome, and SVG icons
This commit is contained in:
parent
777a8109b2
commit
ef7d4bef8e
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]
|
raw := emojiCBDT.imgs[idx]
|
||||||
|
|
||||||
displaySize := int(float64(targetSize) * scale)
|
displaySize := int(float64(targetSize) * scale)
|
||||||
if displaySize < 1 {
|
if displaySize > targetSize {
|
||||||
displaySize = targetSize
|
displaySize = targetSize
|
||||||
}
|
}
|
||||||
|
if displaySize < 1 {
|
||||||
|
displaySize = 1
|
||||||
|
}
|
||||||
|
|
||||||
scaled := raw
|
scaled := raw
|
||||||
if raw.Bounds().Dx() != displaySize || raw.Bounds().Dy() != displaySize {
|
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))
|
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 {
|
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{
|
d := font.Drawer{
|
||||||
Dst: rgba,
|
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
|
scale = 0.55
|
||||||
}
|
}
|
||||||
|
|
||||||
renderSize := targetSize
|
renderSize := int(float64(targetSize) * scale)
|
||||||
if scale < 1 {
|
if renderSize > targetSize {
|
||||||
renderSize = int(float64(targetSize) * scale)
|
renderSize = targetSize
|
||||||
if renderSize < 1 {
|
}
|
||||||
renderSize = 1
|
if renderSize < 1 {
|
||||||
}
|
renderSize = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := exec.Command("rsvg-convert",
|
cmd := exec.Command("rsvg-convert",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user