# 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 d’intégrer Python, FontForge installe généralement un module Python accessible à l’exé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 s’agit 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 ```bash pip install fontforge svgpathtools lxml --break-system-packages ``` ## Utilisation ### Script simple (une fonte) ```bash python3 font_pixelizer.py votre_fonte.ttf ``` ### Paramètres modifiables dans le script : ```python # 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 l’aléatoire Pour ajouter de l’alé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 ```python pixel_size = 120 x_height_scale = 1.0 width_scale = 1.0 pixel_shape = "square" pixel_gap = 0 monospace = True ``` ### Fonte pixel moderne arrondie ```python 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 ```python pixel_size = 40 x_height_scale = 1.2 width_scale = 0.8 pixel_shape = "square" monospace = False ``` ### Fonte rétro avec pixels espacés ```python 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é) ```python pixel_shape = "square" round_corners = 0 # Coins droits ``` ### Square arrondi ```python pixel_shape = "square" round_corners = 15 # Coins arrondis ``` ### Round (cercle) ```python pixel_shape = "round" ``` ### Diamond (losange) ```python 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 ---