first commit
This commit is contained in:
commit
67eb7fa315
13 changed files with 943 additions and 0 deletions
160
font_pixellizer/README.md
Normal file
160
font_pixellizer/README.md
Normal file
|
|
@ -0,0 +1,160 @@
|
|||
# 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"]
|
||||
```
|
||||
|
||||
## 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
|
||||
|
||||
---
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue