decor-6-expe/font_pixellizer
2026-02-10 21:35:00 +01:00
..
Decor-Regular.ttf first commit 2026-02-10 21:30:40 +01:00
font_pixelizer.py update readme 2026-02-10 21:35:00 +01:00
IBMPlexMono-Regular.ttf first commit 2026-02-10 21:30:40 +01:00
README.md update readme 2026-02-10 21:35:00 +01:00

Font Pixelizer

Ensemble d'outils Python pour transformer n'importe quelle typographie en version pixelisée avec paramètres.

Fonctionnalités

  • Pixelisation complète : Convertit une fonte vectorielle en version pixelisée
  • Contrôle de la taille des pixels : De très détaillé à très pixellisé
  • Modification des proportions : Hauteur d'x et largeur ajustables
  • Support monospace : Option pour forcer un espacement fixe
  • Formes de pixels personnalisables : Carré, rond, losange

Dépendances

Ce site peut aider à l'installation: https://avoidsoftware.sarahgarcin.com/dependances.html

Installer python fontforge

FontForge est un éditeur de polices de caractères libre et open source. En plus dintégrer Python, FontForge installe généralement un module Python accessible à lexécutable Python du système. FontForge est disponible dans son ensemble selon les termes de la GNU GPL version 3 ou toute version ultérieure. Cette extension permet la manipulation de typographies.

sur macOS

Nécessite Homebrew

  • Ouvrir le terminal -Lancer la commande brew install fontforge -Tester si Fontforge est bien exécutable par Python: python3 import fontforge, psMat -Si la commande ne fonctionne pas (Mac est un peu capricieux quand il sagit de Fontforge), il faut déplacer le module Fontforge vers les dépendances de Python:
    sudo cp $(find $(brew --prefix fontforge)/. -name "fontforge.so") $(python3 -c "import site;print(site.getsitepackages()[0]);") sudo cp $(find $(brew --prefix fontforge)/. -name "psMat.so") $(python3 -c "import site;print(site.getsitepackages()[0]);")

sur Linux

  • Ouvrir le Terminal en utilisateur root
  • Mettre à jour le gestionnaire de paquets:
    sudo apt update
    sudo apt upgrade
  • Installer Python Fontforge python3-fontforge

Installer les autres dépendances

pip install fontforge svgpathtools lxml --break-system-packages

Utilisation

Script simple (une fonte)

python3 font_pixelizer.py votre_fonte.ttf

Paramètres modifiables dans le script :

# Taille des pixels
pixel_size = 80  # Plus grand = moins de détails, effet plus rétro

# Échelles de déformation
x_height_scale = 1.0  # 0.5 = écrasé, 2.0 = étiré verticalement
width_scale = 1.0     # 0.5 = condensé, 2.0 = étendu horizontalement

# Monospace
monospace = False          # True pour forcer espacement fixe
monospace_width = None     # Largeur fixe (None = auto-calculé)

# Style des pixels
pixel_shape = "square"     # "square", "round", "diamond"
pixel_gap = 0              # Espace entre pixels (0 = collés)
round_corners = 0          # Rayon arrondi des coins (0 = coins droits)

# Export
new_family_name = "Pixel"
font_weight = "Regular"
export_formats = ["ttf"]   # ["ttf", "otf", "woff", "woff2"]

Ajouter de laléatoire

Pour ajouter de laléatoire dans les paramètres:

  • voir exemple de configuration ligne 117 (commentée par défaut)
  • voir exemple de configuration ligne 235 (commentée par défaut)

=> randrange(min, max, step)

Exemples de configuration

Fonte rétro 8-bit classique

pixel_size = 120
x_height_scale = 1.0
width_scale = 1.0
pixel_shape = "square"
pixel_gap = 0
monospace = True

Fonte pixel moderne arrondie

pixel_size = 60
x_height_scale = 1.0
width_scale = 1.0
pixel_shape = "square"
pixel_gap = 2
round_corners = 8
monospace = False

Fonte condensée haute résolution

pixel_size = 40
x_height_scale = 1.2
width_scale = 0.8
pixel_shape = "square"
monospace = False

Fonte rétro avec pixels espacés

pixel_size = 100
x_height_scale = 1.0
width_scale = 1.0
pixel_shape = "round"
pixel_gap = 10
monospace = True

Styles de pixels disponibles

Square (carré)

pixel_shape = "square"
round_corners = 0  # Coins droits

Square arrondi

pixel_shape = "square"
round_corners = 15  # Coins arrondis

Round (cercle)

pixel_shape = "round"

Diamond (losange)

pixel_shape = "diamond"

Comment ça marche ?

  1. Extraction : Le script extrait tous les glyphes de la fonte source en SVG
  2. Analyse : Chaque glyphe est analysé pour déterminer sa forme
  3. Grille : Une grille de pixels est calculée selon pixel_size
  4. Raycasting : Pour chaque position de pixel, on teste si elle est dans le contour original
  5. Génération : Les pixels sont créés sous forme de SVG
  6. Reconstruction : Une nouvelle fonte est assemblée avec tous les glyphes pixelisés
  7. Export : La fonte est exportée au format souhaité

Licence

GNU GPL