Подушка показывает пустой квадрат вместо разобранного значка Font Awesome при рисовании на изображении – как правильно вPython

Программы на Python
Anonymous
Подушка показывает пустой квадрат вместо разобранного значка Font Awesome при рисовании на изображении – как правильно в

Сообщение Anonymous »

Я анализирую HTML-страницы, содержащие некоторые значки Font Awesome (например,
FA_ICONS = {
"fa-calendar": "📅",
"fa-times-circle": "✖",
"fa-check-circle": "✔",
"fa-info-circle": "ℹ",
"fa-exclamation-circle": "❗",
"fa-exclamation-triangle": "⚠",
"fa-lightbulb-o": "💡",
"fa-bolt": "⚡",
#.. etc
}

). Мне нужно визуализировать эти значки в виде PNG-изображений с помощью Pillow, не требуя от пользователей установки системных шрифтов.
Преобразуйте значок в SVG с помощью элемента ``, используя символ Font Awesome Unicode, а затем визуализируйте с помощью cairosvg.
В результате вместо реального значка будет пустой квадрат (⯀). Это происходит в нескольких операционных системах (Windows/Linux/macOS).
Мне нужны значки векторного качества, которые масштабируются без пикселизации, и мне нужен полный доступ ко всем значкам Font Awesome 12, а не только к подмножеству, имеющему эквиваленты эмодзи.
Как я могу правильно отображать значки Font Awesome в виде изображений PNG, используя мой текущий стек, не требуя от пользователей установки системных шрифтов?
from PIL import Image
import cairosvg
import io

def render_fa_icon(icon_unicode: str = "\uf005") -> io.BytesIO:
"""Render Font Awesome icon by Unicode character"""
svg = f'''

{icon_unicode}

'''
png_bytes = cairosvg.svg2png(bytestring=svg.encode('utf-8'))
img = Image.open(io.BytesIO(png_bytes))
img.show() # Shows empty square
img_io = io.BytesIO()
img.save(img_io, format='PNG')
img_io.seek(0)
return img_io

# This produces an empty square
render_fa_icon("\uf005") # Unicode for fa-home

Environment:
- OS: Windows 11 / Ubuntu 22.04
- Python: 3.11.5
- Pillow: 10.1.0
- cairosvg: 2.7.0

Вернуться в «Python»