
Une police chinoise de style Fang Song expérimental généré avec le traçage squelette et le pix2pix, avec des glyphes basés sur cwTExfangsong. La police est optimisée pour la composition verticale. Vous trouverez ci-dessous un échantillon:


La police contient environ 13 000 glyphes, principalement pour le chinois traditionnel.
J'ai créé la police pour l'un de mes propres projets. La police n'est certes pas parfaite, mais a néanmoins de nombreuses caractéristiques malades; Par conséquent, je partage le fichier de police et les programmes utilisés pour le générer.
Téléchargez la police directement sur dist / tkfangsong.ttf.
Le nom de la police est 剔骨仿宋 (Thek-Kwot-Fang-Song, ainsi nommé parce que l'algorithme qui l'a créé ressemble à "Deboning"). Il est concédé sous licence SIL ouverte. Si vous souhaitez créditer l'auteur, vous pouvez utiliser mon nom 黃令東 / 黄令东 ou la romanisation "Lingdong Huang".
La police s'appuie sur les formes élégantes de Cwtexfangsong pour ajouter plus de look et de sensation à la main qui rappellent l'esthétique des vieux livres imprimés sur bois.
La police a une proportion plus large par rapport au CWTEXFangsong d'origine, et est encore élargi vers le bas, pour accentuer les coups de finition. Le "centre de masse" est également déplacé vers le bas:

En haut à droite se trouve une visualisation de la fonction de base utilisée pour déformer le squelette.
La hauteur d'un glyphe est également modifiée en fonction de sa complexité verticale, calculée avec l'opérateur Sobel et prenant le maximum de chaque ligne de pixel.

De nombreuses polices sont optimisées pour la composition horizontale, et en tant que telle, lorsqu'elle est disposée verticalement, le centre de masse se déplace à gauche et à droite, donnant un aspect déchiqueté. Cette police tente de résoudre le problème en calculant les centroïdes (via des moments d'image) et en les alignant.

La police a des textures riches. Certains d'entre eux sont des artefacts produits par Pix2Pix Network; D'autres sont des bruits affinés délibérément ajoutés.

Il convient de noter que, en tant que processus automatisé, il ne produit pas toujours des résultats optimaux; Certains personnages pourraient finir par paraître laids ou utiliser le mauvais mouvement caligraphique pour certains accidents vasculaires cérébraux; Pour certains caligraphes, certains accidents vasculaires cérébraux peuvent sembler trop "faibles" à leurs goûts.
L'axe médial (squelette) est calculé pour chaque rendu raster des glyphes dans la police d'origine. (La police Hershey résultante peut être trouvée sur ./dist/cwfs64j.hf.txt)

Paies d'images: Le rendu original vs les squelettes est envoyé à pix2pix pour l'entraînement. PIX2PIX apprend la correspondance et devient capable de transformer les squelettes en glyphes.
De nouveaux squelettes sont générés en déformant les originaux en fonction de mon goût (discutable).

Tous les nouveaux squelettes sont introduits dans le réseau formé pour obtenir les nouveaux glyphes. Les nouveaux glyphes sont déformés dans la structure, mais le poids et la forme des accidents du terrain semblent toujours légitimes.
Certains post-traitements sont appliqués et le potrace est utilisé pour reveneraliser les glyphes. Enfin, FontForge est utilisé pour créer un fichier TTF.
Notez que pour utiliser la police, vous pouvez simplement le télécharger ici. Ces sections sont pour reproduire les résultats à partir de zéro.
Les scripts utilisés pour construire la police sont inclus dans le workflow/ dossier. Notez que la fabrication de la police est un processus assez impliqué (en particulier la partie de la formation du filet neuronal). Vous devrez peut-être également modifier les scripts pour s'adapter à votre configuration système / dossier, mais voici quelques étapes difficiles:
skel.py > CWFS64.HF.TXT , puis join.py > CWFS64J.HF.TXTpairs.py pour lire CWFS64J.HF.TXT et sortir dans un dossier que vous allez créer.warp.py > CWFS64W3.HF.TXT . Modifiez pairs.py pour en lire et créer un dossier de sortie comme avant. Exécutez pairs.py .retouched/ .refine.py pour lire à partir des images et des dossiers d'images retouchées, créez un dossier de sortie fine/ pour lui et exécutez le script.trace_all.py .forgefont.py pour créer un TTF à partir des SVG générés à l'étape précédente.preview.py > index.html , ou prévisualiser le squelette avec preview_hf.py > index.html .Un PDF contenant tous les glyphes peut être trouvé ici. Si vous trouvez cette police pas mal, vous pourriez également apprécier Qiji-Font, une reproduction plus authentique d'une police historique.