decor-6-expe/font_pixellizer/README.md
2026-02-10 21:35:00 +01:00

168 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
```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 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
```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
---