====== Polices pour développeurs ====== Être développeur (je n'aime pas le terme «programmeur»), c'est travailler de longues journées sur du code source. Donc c'est fatiguant pour les yeux, et le moindre caractère mal placé provoque une erreur. Nous cherchons à faire le moins d'erreurs possible. Seulement voilà, encore trop de développeurs utilisent l'**horrible**, l'**abominable** police //Courrier New//. Avec une mauvaise police, il y a des risques de mauvaise lecture du code, par exemple en confondant: * 0/O (le chiffre "zéro" et la lettre "O" majuscule) * 1/l (le chiffre "un" et la lettre "L" minuscule) * B/8 (la lettre "B" et le chiffre "8") De plus certaines polices ne facilitent pas la lecture des accolades ou parenthèses correspondantes, ou tout un tas d'autres petits défaut qui alourdissent la lecture du code. Voici donc une liste de polices recommandées... et à éviter (à titre d'exemple). Bien sûr cette sélection n'est **pas exhaustive** et **tout à fait personnelle**, mais j'espère qu'elle pourra aider. Voici l'échantillon de texte utilisé pour comparer: ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz !@#$%^&*()_+-=,./?<>[]\{}| éèêü~ÉÈÊÜ€ 0O 1l B8 <> [] {} 2N2N2N2N public static int findMin(int[] list) { /* Not Hello, world */ assert list != null && list.length > 0 : "failed precondition"; int indexOfMin = 0; for(int i = 1; i < list.length; i++) { if(list[i] < list[indexOfMin]) { indexOfMin = i; } } return indexOfMin; } ====== Les MAUVAISES polices ====== Regardez bien - entre autres - la mauvaise distinction entre 0/O ou 1/l, ce qui peut être à la source d'erreurs. S'il y a **vraiment** une police à éviter, c'est celle-là. * **Courrier New** | {{:polices:polices-courriernew-10-texte.png?direct}} | {{:polices:polices-courriernew-10-code.png?direct}} | ====== Les BONNES polices ====== On appréciera chez //Mononoki// et //Mensch// les signes de comparaison ( < et > ) élargis, rendant le code plus lisible. //Mononoki// possède également des crochets et accolades qui dépassent visuellement des caractères, ce qui permet de repérer plus rapidement les ouvertures et fermetures. Ainsi que le "B" subtilement différencié du 8. Mes préférées sont **//Mononoki//** et **//Ubuntu Mono//**. * **Mononoki** (http://madmalik.github.io/mononoki/) (téléchargement direct: {{:polices:mononoki.zip}}) | {{:polices:polices-mononoki-11-texte.png?direct}} | {{:polices:polices-mononoki-11-code.png?direct}} | * **Ubuntu Mono** (http://font.ubuntu.com/) (téléchargement direct: {{:polices:ubuntu-font-family-0.83.zip}}) | {{:polices:polices-ubuntumono-11-texte.png?direct}} | {{:polices:polices-ubuntumono-11-code.png?direct}} | * **Mensch** (https://robey.lag.net/2010/06/21/mensch-font.html) (téléchargement direct: {{:polices:mensch.ttf.zip}}) | {{:polices:polices-mensch-10-texte.png?direct}} | {{:polices:polices-mensch-10-code.png?direct}} | * **Droid Sans Mono** (https://github.com/android/platform_frameworks_base/tree/master/data/fonts) (téléchargement direct: {{:polices:droid-sans-mono-regular.zip}}) | {{:polices:polices-droidsansmono-10-texte.png?direct}} | {{:polices:polices-droidsansmono-10-code.png?direct}} | * **Consolas** (fournie avec Windows) | {{:polices:polices-consolas-11-texte.png?direct}} | {{:polices:polices-consolas-11-code.png?direct}} | * **DejaVu Sans Mono** (https://dejavu-fonts.github.io/, livrée avec la plupart des distributions Linux) (téléchargement direct: {{:polices:dejavu-fonts-ttf-2.37.zip}}) | {{:polices:polices-dejavusansmono-10-texte.png?direct}} | {{:polices:polices-dejavusansmono-10-code.png?direct}} | * **InputMono** (http://input.fontbureau.com/) (téléchargement direct: {{:polices:input-font.zip}}) * à noter que cette police est customisable (vous pouvez par exemple changer le style des accolades ou du 0: Allez dans [[http://input.fontbureau.com/download/|cette page]] et cliquez sur «//Customize your download//»). | {{:polices:polices-inputmono-10-texte.png?direct}} | {{:polices:polices-inputmono-10-code.png?direct}} | * **FiraCode** (https://github.com/tonsky/FiraCode) (téléchargement direct:: {{:polices:firacode_1.204.zip}}) | {{:polices:polices-firacode-10-texte.png?direct}} | {{:polices:polices-firacode-10-code.png?direct}} | * **Attention**, FiraCode est un peu particulière car elle fait des ligatures. Ainsi si vous tapez ''%%<= >= <> != == === -> =>%%'' vous obtiendrez: {{:polices:polices-firacode-ligatures.png?direct}} ====== Installer des polices sous Linux ====== Généralement, il vous suffit de les copier dans le dossier ''~/.fonts'' et de taper ''fc-cache -fv''. ====== Liens ====== * D'autres polices pour développeur: * //[[http://levien.com/type/myfonts/inconsolata.html|Inconsolata]]// * //[[https://github.com/nathco/Office-Code-Pro|Office Code Pro]]// * //[[https://be5invis.github.io/Iosevka/|Iosevka]]// * //[[https://input.fontbureau.com/info/|Input]]// * //[[https://www.jetbrains.com/lp/mono/|JetBrains Mono]]// * //[[https://b612-font.com/|B612]]// * //[[https://www.monolisa.dev/|MonoLisa]]// * https://commitmono.com/ * http://app.programmingfonts.org/ * https://www.slant.co/topics/67/~best-programming-fonts * http://sourcefoundry.org/hack/ * https://github.com/microsoft/cascadia-code * https://vfoley.xyz/lesser-known-coding-fonts/ * https://www.nerdfonts.com/font-downloads * https://rubjo.github.io/victor-mono/ * https://github.com/intel/intel-one-mono * https://monaspace.githubnext.com/ * Comprendre les modes de lissage des polices (hinting, anti-aliasing, sub-pixel rendering): http://www.commentcamarche.net/faq/5871-polices-anti-aliasing-hinting-et-sub-pixel-rendering