Vous voulez des mises à jour (peu fréquentes) sur les nouvelles polices à partir de type flèche?
? Inscrivez-vous à la newsletter de type Arrow! ?
Suivez @arrowtype sur Instagram!
En savoir plus sur le spécimen Web récursif →

Recursive Sans & Mono est une famille de type variable conçue pour un meilleur code et une meilleure interface utilisateur. Il est inspiré par la signature de script occasionnelle, mais conçu principalement pour répondre aux besoins des environnements de programmation et des interfaces d'application.
En programmation, «Recursion» est lorsqu'une fonction s'appelle, en utilisant sa propre sortie comme une entrée pour donner des résultats puissants. Le mono récursif a été utilisé comme un outil pour aider à se construire: il a été utilisé pour écrire des scripts Python pour automatiser les travaux de production de type et générer des images d'échantillons, et il a été utilisé dans HTML, CSS et JS pour créer des preuves et des prototypes basés sur le Web. Grâce à cette utilisation active, le mono récursif a été conçu pour être à la fois amusant à regarder et profondément utile pour le travail d'une journée.
Recursif Sans emprunte des glyphes de son mono parent mais ajuste les largeurs de nombreux glyphes clés pour une lisibilité confortable. Ses métriques sont superplexées - chaque style occupe exactement le même espace horizontal, dans tous les styles. Dans cette police variable à 3 axes, cela permet des transitions de fluide entre le poids, l'inclinaison et «l'expression» (formes de lettres décontractées), le tout sans décalage de texte ni reflux de mise en page. Non seulement cela permet de nouvelles possibilités interactives dans l'interface utilisateur, mais cela constitue également une expérience de composition particulièrement amusante.
Recursive est conçu avec un jeu de caractères d'experts en latin de polices Google modifié, y compris de nombreux symboles utiles pour les devises et les mathématiques (voir les notes de jeu de caractères pour plus de détails), ainsi que la prise en charge des langues suivantes:
Abenaki, Afaan Oromo, Afar, Afrikaans, Albanian, Alsatian, Amis, Anuta, Aragonese, Aranese, Aromanian, Arrernte, Arvanitic (Latin), Asturian, Atayal, Aymara, Azerbaijani, Bashkir (Latin), Basque, Belarusian (Latin), Bemba, Bikol, Bislama, Bosnian, Breton, Cape Verdean Creole, Catalan, Cebuano, Chamorro, Chavacano, Chichewa, Chickasaw, Cimbrian, Cofán, Cornish, Corsican, Creek, Crimean Tatar (Latin), Croatian, Czech, Danish, Dawan, Delaware, Dholuo, Drehu, Dutch, English, Esperanto, Estonian, Faroese, Fijian, Filipino, Finnish, Folkspraak, French, Frisian, Friulian, Gagauz (Latin), Galician, Ganda, Genoese, German, Gikuyu, Gooniyandi, Greenlandic (Kalaallisut), Guadeloupean Creole, Gwich’in, Haitian Creole, Hän, Hawaiian, Hiligaynon, Hopi, Hotcąk (Latin), Hungarian, Icelandic, Ido, Igbo, Ilocano, Indonesian, Interglossa, Interlingua, Irish, Istro-Romanian, Italian, Jamaican, Javanese (Latin), Jèrriais, Kaingang, Kala Lagaw Ya, Kapampangan (Latin), Kaqchikel, Karakalpak (Latin), Karelian (Latin), Kashubian, Kikongo, Kinyarwanda, Kiribati, Kirundi, Klingon, Kurdish (Latin), Ladin, Latin, Latino sine Flexione, Latvian, Lithuanian, Lojban, Lombard, Low Saxon, Luxembourgish, Maasai, Makhuwa, Malay, Maltese, Manx, Māori, Marquesan, Megleno-Romanian, Meriam Mir, Mirandese, Mohawk, Moldovan, Montagnais, Montenegrin, Murrinh-Patha, Nagamese Creole, Nahuatl, Ndebele, Neapolitan, Ngiyambaa, Niuean, Noongar, Norwegian, Novial, Occidental, Occitan, Old Icelandic, Old Norse, Onĕipŏt, Oshiwambo, Ossetian (Latin), Palauan, Papiamento, Piedmontese, Polish, Portuguese, Potawatomi, Q’eqchi’, Quechua, Rarotongan, Romanian, Romansh, Rotokas, Sami (Inari Sami), Sami (Lule Sami), Sami (Northern Sami), Sami (Southern Sami), Samoan, Sango, Saramaccan, Sardinian, Scottish Gaelic, Serbian (Latin), Seri, Seychellois Creole, Shawnee, Shona, Sicilian, Silesian, Slovak, Slovenian, Slovio (Latin), Somali, Sorbian (Lower Sorbian), Sorbian (Upper Sorbian), Sotho (Northern), Sotho (Southern), Spanish, Sranan, Sundanese (Latin), Swahili, Swazi, Swedish, Tagalog, Tahitian, Tetum, Tok Pisin, Tokelauan, Tongan, Tshiluba, Tsonga, Tswana, Tumbuka, Turkish, Turkmen (Latin), Tuvaluan, Tzotzil, Uzbek (Latin), Venetian, Vepsian, Vietnamese, Volapük, Võro, Wallisian, Walloon, Waray-Waray, Warlpiri, Wayuu, Welsh, Wik-Mungkan, Wiradjuri, Wolof, Xavante, Xhosa, Yapese, Yindjibarndi, Zapotec, Zarma, Zazaki, Zulu, Zuni
Lorsque vous envisagez d'utiliser une police, la licence de police est l'une des premières choses que vous devriez rechercher et lire. Il décrit la façon dont vous acceptez d'utiliser les polices, et la licence de police est différente entre les différents projets de type et les fonderies de type.
Le projet récursif est autorisé sous la licence SIL Open Font V1.1. Il s'agit d'une licence logicielle gratuite qui vous permet d'utiliser le logiciel de police dans un ensemble de conditions. Veuillez vous référer au texte intégral de la licence pour plus de détails sur les autorisations, les conditions et les avertissements.
La manière facile: ouvrez les fichiers de police dans Font Book, puis cliquez sur "Installer la police".
La belle façon:
<yourusername>/Library/FontsDouble-cliquez sur le fichier TTF, puis sélectionnez "Installer".
Pour installer de nombreux fichiers de police statiques (ceux-ci peuvent mieux fonctionner dans des applications telles que Microsoft Word et PowerPoint):
static_fonts , puis dans le dossier Mono ou Sans static_otf .C'est un grand sujet, mais quelques bons guides proviennent de MDN et de CSS-Tricks.
En général, vous devez créer un lien dans la police avec @font-face , en étant sûr d'utiliser font-weight: 300 1000; Pour spécifier la plage de poids de la police:
@font-face {
font-family: 'Recursive';
src: url('path/to/font/<UPDATE_SPECIFIC_FONT_PATH>.woff2') format('woff2-variations');
font-weight: 300 1000;
}
Ensuite, vous pouvez utiliser la police avec les deux font-weight et font-variation-settings !
Notes:
MONO et CASL sont des axes "non enregistrés" (pas actuellement dans la liste officielle des axes et spécifications de variation de Microsoft), ces balises doivent donc être utilisées dans tous les CAP et contrôlées via font-variation-settings .font-style de la propriété pour contrôler les axes slnt et CRSV , mais ceux-ci ont des problèmes de support du navigateur (en octobre 2019, mais les outils évoluent rapidement pour mieux supporter des polices variables, donc cela s'améliorera avec le temps!) Pour l'instant, ceux-ci fonctionnent mieux dans font-variation-settings .font-variation-settings - en savoir plus sur cette technique dans le tutoriel fantastique de Pixel Ambacht. Il existe deux façons principales d'utiliser des éditeurs de code récursifs:
Installez les polices Rec Mono (trouvées dans le dossier "Recursive_Code" des téléchargements de version). Ceux-ci ont des ligatures de code et plusieurs ensembles stylistiques pré-appliqués afin qu'ils fonctionneront par défaut dans la plupart des environnements et applications de code. Ceux-ci sont également nommés et configurés d'une manière qui permet leur utilisation dans des thèmes de code qui utilisent des styles italiques et audacieux. Si vous souhaitez configurer des fonctionnalités spécifiques dans Rec Mono Fonts (comme un 0 ou un g ) en pointillé, voir la configuration du code récursif.
Ces polices sont construites de manière plus traditionnelle que les polices "code" ci-dessus, elles peuvent donc rendre un peu mieux dans certains contextes. Il y a cependant des avantages et des inconvénients: les ligatures de code fonctionnent mieux dans les polices "Code", dans de nombreuses applications uniquement en monospace. Sur Mac Avant MacOS 11, ceux-ci ne fonctionnent pas dans des thèmes avec des styles italiques - voir ci-dessus pour les polices de «code» qui le font. Et, les polices "code" vous permettent un peu plus de personnalisation, si vous le souhaitez!
Pour utiliser les polices DeckTop standard, installez les polices Recursive Mono de bureau (trouvées dans le dossier "Recursive_desktop" des téléchargements de version). Ensuite, activez-les et définissez les fonctionnalités OpenType si votre éditeur de code le permet. Les instructions pour trois éditeurs suivent.
En résumé, ouvrez les paramètres de l'éditeur et définissez la famille des polices. Ces noms de famille sont raccourcis car les noms longs de polices peuvent provoquer des erreurs dans certains environnements. Les principales abréviations sont les suivantes:
Mn signifie mono (monospace / largeur fixe)Sn signifie sans (proportion / largeur naturelle)Csl signifie décontractéLnr signifie linéaireSt signifie statique (par opposition à la variable, comme la police variable récursive complète) Ainsi, vous allez à peu près définir votre éditeur pour utiliser Recursive Mn Csl St ou Recursive Mn Lnr St
Dans les paramètres, recherchez Font Family , puis spécifiez la famille que vous souhaitez utiliser.
Pour le mono-décontracté régulier récursif:
"Recursive Mn Csl St", Menlo, "Apple Color Emoji", monospace
Pour le mono linéaire récursif régulier:
"Recursive Mn Lnr St", Menlo, "Apple Color Emoji", monospace
Ensuite, si vous le souhaitez, vous pouvez activer les fonctionnalités OpenType en recherchant dans les paramètres fontLigatures , puis en éditant ceci dans Settings.json comme ceci:
"editor.fontLigatures" : " 'ss01','ss05','dlig' " (Ce qui précède vous donnerait un 6 et 9 simplifié, une a à un étage, et activer les ligatures de code.)
Dans la barre de menu, allez sur Atom -> Stylesheet et ajoutez ce qui suit:
atom-text-editor {
font-family : 'Recursive Mn Csl St' ; /* This sets the font family*/
font-feature-settings : "ss01" , "ss05" , "dlig" ; /* This sets OpenType features, if you want to set them. */
} Utiliser font-family: 'Recursive Mn Lnr St'; pour obtenir la famille linéaire.
Accédez à Sublime Text -> Preferences -> Settings et définissez font_face sur le nom PostScript spécifique du style que vous souhaitez utiliser.
Pour le mono-décontracté régulier récursif:
"font_face" : " Recursive Mn Csl St " ,Pour le mono linéaire récursif régulier:
"font_face" : " Recursive Mn Lnr St " , Pour contrôler les ligatures de code ou d'autres fonctionnalités OpenType, définissez les font_options ouvertes, comme ainsi:
"font_options" : [ " ss01 " , " ss05 " , " dlig " ],Ainsi, les paramètres complets peuvent ressembler à ceci:
{
"font_face" : " Recursive Mn Lnr St " ,
"font_size" : 24 ,
"theme" : " Adaptive.sublime-theme "
}Récursif a les axes suivants:
| Axe | Étiqueter | Gamme | Défaut | Description |
|---|---|---|---|---|
| Monospace | MONO | 0 à 1 | 0 | Sans (largeur naturelle) à mono (largeur fixe) |
| Occasionnel | CASL | 0 à 1 | 0 | Linéaire à occasionnel |
| Poids | wght | 300 à 1000 | 300 | Léger à extrablack. Peut être défini avec une propriété de poids de police habituelle. |
| Incliner | slnt | 0 à -15 | 0 | Droit (0 °) à incliné (environ 15 °) |
| Cursive | CRSV | 0, 0,5 ou 1 | 0,5 | Toujours romain (0), auto (0,5) ou toujours cursif (1) |
Définitions de l'axe, récursif
Monospace MONO - 0 à 1. Ajuste les largeurs de glyphes de proportionnels ou «sans» (0) à la largeur fixe ou «mono» (1).
Utilisation recommandée: En général, la conception proportionnelle est plus lisible dans le texte et l'interface utilisateur, tandis que la conception de la monospace est plus appropriée pour le code et le texte dans laquelle la désambiguïsation des lettres est particulièrement critique (par exemple, les mots de passe, les numéros d'identification, les données tabulaires, etc.).
CASL CASL - 0 à 1. Ajuste le style expressif ou le «genre» des glyphes. En récursif, cela passe de la linéaire (0) à occasionnel (1).
Utilisation recommandée: Le style linéaire partage une structure similaire aux polices classées comme des aspects linéaires , fusionnant des sans humanists avec des formes de lettres rationalisées, compactes et à côté plat. Cette structure régulière et familière le rend approprié pour un texte long nécessitant une mise au point (par exemple, les paragraphes, les documents de code complets et les titres percutants). Le style décontracté s'inspire de la signature décontractée à un coup, mais dessinée pour de petites tailles. Il est très utile dans le texte de forme plus courte où un ton chaleureux et accueillant est souhaité (par exemple, les titres des articles de blog, la signalisation des magasins et les terminaux informatiques).
Poids wght - 300 à 1000. L'épaisseur globale des lettres et l'obscurité du texte composé avec eux. Notamment, en récursif, l'axe de poids n'affecte pas la largeur des glyphes. Un poids audacieux prend la même quantité d'espace qu'un poids léger, même dans les styles proportionnels de l'axe MONO .
Utilisation recommandée: les différences de poids peuvent mettre l'accent sur le texte, montrer l'interaction des utilisateurs ou ajuster le ton de communication. Pour le texte clair sur des arrière-plans sombres, 400 («régulière») a tendance à être approprié pour le texte et le code. Pour le texte sombre sur un fond léger, il peut être avantageux d'ajuster le poids à 500 («médium»).
Pourquoi n'est-ce pas un axe de qualité? Voir le numéro # 365
SLANT slnt - 0 à -15. Le "maigre avant" des lettres. Remarque: -15 (négatif 15) correspond à une inclinaison dans le sens horaire de 15 °, en raison des racines de la conception de type en géométrie. Si l'axe italique est à sa valeur par défaut, passer devant une inclinaison de -13.99 activera les lettres "cursives", les convertissant en formes plus écrites telles que les "histoire" simplifiées " a et g .
Utilisation recommandée: utilisez l'inclinaison comme moyen secondaire de mettre l'accent sur le texte ou de varier le ton typographique. Dans le texte, il peut être utile d'utiliser une pente partielle d'environ -9, tandis que les tailles d'affichage, vous pouvez vous attendre aux contours les plus précis à 0 ou -15. Vous pouvez également animer de 0 à -13 sans les formes de lettres ou les largeurs de glyphes, ce qui est idéal pour des choses comme des liens ou des boutons en survol.
CRSV cursive - 0, 0,5 ou 1. Contrôle la substitution des formes cursives le long de l'axe d'inclinaison. "Off" (0) maintient des formes de lettres romaines telles qu'une "double histoire" a et g , "Auto" (0,5) permet une substitution cursive, et "on" (1) affirme des formes cursives même en texte droit avec une pente de 0.
Utilisation recommandée: Utilisez la cursive comme moyen tertiaire de mettre l'accent sur le texte, ou comme moyen d'avoir plus de contrôle sur le texte animé (par exemple, un hyperlien qui s'incline sur l'interaction de l'utilisateur peut par style avec cursif 0 ou 1 pour empêcher les changements brusques de substitution de glyphe).
En général, récursif est destiné à une utilisation de petite à moyen, en particulier à l'écran. Cependant, il est utile de comprendre quelles gammes stylistiques fonctionnent le mieux dans quels contextes. Quelques lignes directrices qui méritent d'être connues:
| Gamme de style | Taille recommandée | Cas d'utilisation recommandée |
|---|---|---|
| Casual 0 (linéaire) , poids 300–800 (Light - Extrabold) | 8px à 72px | Utilisation générale (en particulier pour le texte plus long) |
| Casual 1 (occasionnel) , poids 300–800 (Light - Extrabold) | 14px à 72px | Utilisation générale (plus de personnalité) |
| Poids 801–900 (noir - Extrablack) | 32px à 144px | Titres, typographie afficher |
| Valeurs intermédiaires de décontracté et d'inclinaison | 10px à 40px | Bon dans le texte, mais peut ne pas être aussi beau dans les tailles d'affichage |
Choses à savoir:
CASL et slnt intermédiaires. Si vous vous en tenez à des instances nommées dans les applications de conception (par exemple, Mono Casual Bold Italic , etc.), cela est géré automatiquement pour vous.Recursive est construit avec un certain nombre de fonctionnalités OpenType qui facilitent le contrôle de quelques fonctionnalités typographiques pratiques.

Pour construire, configurer l'environnement virtuel
virtualenv -p python3 venv
Puis activez-le:
source venv/bin/activate
Puis installez les exigences:
pip install -U -r requirements.txt
Aussi:
pip install git+https://github.com/LettError/DesignspaceProblems
Les polices sont construites avec le script mastering/build.py . Ce script peut tout construire ( python build.py --all ), ou un sous-ensemble des polices. Pour afficher toutes les options, tapez python build.py -h pour voir toutes les options. Le processus de construction recommandé est détaillé ci-dessous.
Remarque: Il existe des sous-scripts pour simplement préparer les fichiers source ( mastering/prep_fonts.py ), en créant les fichiers source ( mastering/build_files.py ), en générant la police variable ( mastering/build_variable.py ) et en générant les polices statiques ( build_static.py ). Ces scripts peuvent être utiles si vous voulez simplement faire une chose aux fichiers de construction. Chacun prend un ensemble d'arguments de ligne de commande, tous documentés (tapez python <script_name> -h ) pour afficher la documentation.
Premièrement, les polices de préparation
Avant de commencer, modifiez votre répertoire de travail en mastering .
cd mastering
python build.py --files est la première étape. Cela générera tous les fichiers nécessaires pour construire les polices variables et statiques. Vous voudrez probablement donner à la police un numéro de version avec cette commande ( python build.py --version 1.085 --files ). Pour préparer uniquement des fichiers pour la police de la variable, utilisez python build.py --varfiles ou pour préparer uniquement des fichiers pour les polices statiques, utilisez python build.py --statfiles .
Une fois les fichiers générés (notez que les instances statiques prennent un peu de temps pour générer), vous voudrez regarder le fichier mastering/build/static/CFF/checkoutlines.txt . Ceci est le rapport (édité pour supprimer les problèmes qui n'ont pas besoin d'attention) de Checkoutlinesufo. Les problèmes trouvés dans ce rapport doivent être nettoyés dans les OVNIS statiques. De nombreux problèmes sont dus à l'élimination du chevauchement. Rien n'est parfait, les algorithmes d'élimination de chevauchement inclus.
Pour construire la police variable
Pour construire la police variable, exécutez:
# activate venv, install dependencies, cd mastering
version=1.085 # (replace version number)
python build.py --varfiles --version $version
python build.py --variable --version $versionPour construire les polices statiques
Pour construire toutes les polices statiques, exécutez:
# activate venv, install dependencies, cd mastering
version=1.085 # (replace version number)
python build.py --statfiles --version $version
python build.py --static --version $versionPour construire toutes les polices
Si vous souhaitez construire toutes les sources, les polices et les versions WOFF2 de toutes les polices exécutées:
# activate venv, install dependencies, cd mastering
python build.py --all --version 1.085 # (replace version number)Obtenez des notifications (Mac uniquement)
Ajouter l'option --pync ( -p pour faire court) à l'appel de script pour obtenir des notifications Mac, ce qui peut être utile si vous travaillez sur d'autres tâches pendant qu'une construction s'exécute.
# activate venv, install dependencies, cd mastering
python build.py --all --pync --version 1.085 # (replace version number)Tout d'abord, construisez des polices avec le flux de maîtrise au-dessus. Alors:
# navigate to the root directory of the project, then...
# update to latest font build directory
fontDir= " fonts_1.085 "
src/build-scripts/make-release/00-prep-release.sh $fontDir Ensuite, copiez la dernière police de variable dans votre réapprovisionnement de configuration de code récursif local pour créer des polices de code mises à jour. Copiez-les dans les fonts/ArrowType-Recursive-1.XXX/Recursive_Code .
Enfin, accédez à la page des versions du repo pour en faire une nouvelle.
Ce projet a inclus une grande quantité de recherches (contenues dans docs/ ) et contient de nombreux petits outils (contenus dans src/00-recursive-scripts-for-robofont qui peuvent vous aider si vous concevez des polices variables avec des OVNIS dans Robofont.
Accédez à votre dossier Robofont Scripts dans un terminal.
cd , puis copiez-taste ou glisser-n-drop le dossier scripts pour obtenir son FilePath complet. Appuyez sur Retour / Entrée. Faites un lien symbolique ou "Symlik" au dossier Recursive Project Scripts, src/00-recursive-scripts-for-robofont
ln -ssrc/00-recursive-scripts-for-robofont de Finder pour obtenir son chemin complet. Appuyez sur Retour / Entrée.ls pour répertorier les fichiers. Vous devriez voir src/00-recursive-scripts-for-robofont comme l'un des éléments répertoriés.Donc, cela ressemblera à quelque chose:
ln -s ~/FOLDER_PATH/robofont-scripts ~/FOLDER_PATH/recursive/src/00-recursive-scripts-for-robofont
Maintenant, vous pouvez exécuter les scripts de projet récursifs directement à partir du menu Scripts, ou en les ouvrant dans la fenêtre de script.
Voir contribution.md pour les politiques concernant la contribution du projet.