11 KiB
Fira Code: la fuente monoespaciada con ligaduras gratuita para programación
El problema
Los programadores usamos muchos símbolos, frecuentemente codificados con varios caracteres. Para el cerebro humano, sucesiones como ->
, <=
o :=
son unidades lógicas individuales, incluso si requieren dos o más caracteres en pantalla. Nuestros ojos utilizan una cantidad no nula de energía para leer, analizar y unir caracteres mútiples en una sola unidad lógica. Idealmente, todos los lenguajes de programación deberían estar diseñados para representar los operadores con símbolos Unicode; pero ese no es el caso aún.
La solución
Fira Code es una fuente monoespaciada gratuita que contiene ligaduras para combinaciones multicaracter comunes en programación. Esta es simplemente una característica del renderizado de la fuente: el código subyacente permanece compatible con el estándar ASCII. Esto ayuda a leer y comprender más rápido el código. Para algunas sucesiones comunes, como ..
o //
, las ligaduras nos permiten hacer correcciones en el espaciado.
Descarga e instalación
Recursos adicionales (en inglés):
Contribuyendo
Fira Code es un proyecto personal desarrollado en mi tiempo libre, sin financiamiento y con una enorme lista de solicitudes. Si el resultado es de tu agrado, por favor considera apoyar a su desarrollo por medio de GitHub Sponsors o Patreon. ¡Cualquier ayuda cuenta!
¿Qué ofrece?
Izquierda: ligaduras renderizadas en Fira Code. Derecha: las mismas secuencias de caracteres sin ligaduras.
![](/tonsky/FiraCode/media/commit/aeb1e58303f3a9e08eaa2651a65e4b6d4830ee5f/extras/ligatures_es.png)
Fira Code viene con una gran variedad de flechas. Mejor aun, ¡estas pueden hacerse tan largas como se desee y se pueden combinar los fragmentos incial/medio/final de la forma que se quiera!
![](/tonsky/FiraCode/media/commit/aeb1e58303f3a9e08eaa2651a65e4b6d4830ee5f/extras/arrows_es.png)
Fira Code no solo se trata de las ligaduras. Algunos ajustes se han hecho a la puntuación y a pares de letras frecuentes.
![](/tonsky/FiraCode/media/commit/aeb1e58303f3a9e08eaa2651a65e4b6d4830ee5f/extras/typographics_es.png)
Fira Code viene con algunas variantes de caracteres, de manera que cada uno puede escoger lo que mejor le convenga. Cómo activar (en inglés)
![](/tonsky/FiraCode/media/commit/aeb1e58303f3a9e08eaa2651a65e4b6d4830ee5f/extras/character_variants_es.png)
Algunas ligaduras pueden alterarse o activarse usando conjuntos estilísticos/variantes de caracteres:
![](/tonsky/FiraCode/media/commit/aeb1e58303f3a9e08eaa2651a65e4b6d4830ee5f/extras/ligature_variants_es.png)
Siendo una fuente para programación, Fira Code tiene un soporte fantástico para dibujos ASCII/de cajas, powerline y otras formas de interfaz de usuario para terminal:
![](/tonsky/FiraCode/media/commit/aeb1e58303f3a9e08eaa2651a65e4b6d4830ee5f/extras/console_es.png)
Fira Code es la primera fuente para programación en ofrecer glifos dedicados al dibujo de barras de progreso:
![](/tonsky/FiraCode/media/commit/aeb1e58303f3a9e08eaa2651a65e4b6d4830ee5f/extras/progress.png)
En acción:
![](/tonsky/FiraCode/media/commit/aeb1e58303f3a9e08eaa2651a65e4b6d4830ee5f/extras/progress_es.gif)
Esperamos que más fuentes adopten esta convención y definan sus propias versiones.
La covertura del estándar Unicode hace de Fira Code una gran elección para la escritura matemática:
![](/tonsky/FiraCode/media/commit/aeb1e58303f3a9e08eaa2651a65e4b6d4830ee5f/extras/math_es.png)
¿Cómo luce?
![](/tonsky/FiraCode/media/commit/aeb1e58303f3a9e08eaa2651a65e4b6d4830ee5f/extras/samples.png)
![](/tonsky/FiraCode/media/commit/aeb1e58303f3a9e08eaa2651a65e4b6d4830ee5f/extras/samples2.png)
Lista de compatibilidad con editores
Funciona | No funciona |
---|---|
Abricotine | Arduino IDE |
Android Studio (2.3+, instrucciones) | Adobe Dreamweaver |
Anjuta (excepto con EOF) | Delphi IDE |
AppCode (2016.2+, instrucciones) | Emacs por sí solo (solución alternativa) |
Atom 1.1 o más nuevo (instrucciones) | Godot (reporte) |
BBEdit (14.6+, instrucciones) | IDLE |
Brackets (con este plugin) | KDevelop 4 |
Chocolat | Monkey Studio IDE |
CLion (2016.2+, instrucciones) | UltraEdit |
Cloud9 (instrucciones) | |
Coda 2 | |
CodeLite | |
CodeRunner | |
CotEditor | |
Eclipse | |
elementary Code | |
Geany (1.37+) | |
gEdit / Pluma | |
GNOME Builder | |
GoormIDE (instrucciones) | |
gVim (Windows, GTK) | |
IntelliJ IDEA (2016.2+, instrucciones) | |
Kate, KWrite | |
KDevelop 5+ | |
Komodo | |
Leafpad | |
LibreOffice | |
LightTable (instrucciones) | |
LINQPad | |
MacVim 7.4 o más nuevo (instrucciones) | |
Mancy | |
MATLAB (instrucciones) | |
Meld | |
Mousepad | |
NeoVim-gtk | |
NetBeans | |
Notepad (Windows) | |
Notepad++ (con una solución alternativa) | |
Notepad3 (instrucciones) | |
Nova | |
PhpStorm (2016.2+, instrucciones) | |
PyCharm (2016.2+, instrucciones) | |
QOwnNotes (21.16.6+) | |
QtCreator | |
Rider | |
RStudio (instrucciones) | |
RubyMine (2016.2+, instrucciones) | |
Scratch | |
Scribus (1.5.3+) | |
SublimeText (3146+) | |
Spyder IDE (solamente con Qt5) | |
SuperCollider 3 | |
TeXShop | |
TextAdept (Linux, macOS) | |
TextEdit | |
TextMate 2 | |
VimR (instrucciones) | |
Visual Studio (2015+, instrucciones) | |
Visual Studio Code (instrucciones) | |
WebStorm (2016.2+, instrucciones) | |
Xamarin Studio/Monodevelop | |
Xcode (8.0+, alternativamente con este plugin) | |
Xi | |
Probablemente: Smultron, Vico | En duda: Code::Blocks IDE |
Lista de compatibilidad con terminales
Plataforma | Funciona | No funciona |
---|---|---|
macOS | Hyper (ver #3607) iTerm 2 Kitty Terminal.app ZOC |
Alacritty |
Windows | Hyper (ver #3607) Mintty Token2Shell Windows Terminal |
Alacritty Cmder ConEmu PuTTY Windows Console ZOC |
Linux | Hyper (ver #3607) Kitty Konsole QTerminal Termux st (parche) |
Alacritty GNOME Terminal Terminales basadas en libvte (reporte):
rxvt terminology xterm |
ChromeOS | crosh (instrucciones) |
Soporte en el navegador web
<!-- HTML -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css">
/* CSS */
@import url(https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css);
/* Especificar en el CSS */
code { font-family: 'Fira Code', monospace; }
@supports (font-variation-settings: normal) {
code { font-family: 'Fira Code VF', monospace; }
}
- IE 10+, Edge Legacy: activar con
font-feature-settings: "calt";
- Firefox
- Safari
- Navegadores basados en Chromium (Chrome, Opera)
- ACE
- CodeMirror (activar con
font-variant-ligatures: contextual;
)
Proyectos que usan Fira Code
Alternativas
Fuentes monoespaciadas con ligaduras gratuitas:
Fuentes monoespaciadas con ligaduras no gratuitas:
Compilando Fira Code localmente
En caso que se quiera modificar el código en FiraCode.glyphs y compilar archivos OTF/TTF/WOFF propios, estas son las instrucciones que uso en macOS:
# instalar las herramientas requeridas para la compilación
./script/bootstrap_macos.sh
# compilar los archivos de la fuente
./script/build.sh
# instalar los OTFs en ~/Library/Fonts
cp distr/otf/*.otf ~/Library/Fonts
Alternativamnete, se puede compilar Fira Code usando Docker:
# instalar las dependencias en un contenedor y compilar los archivos de la fuente
make
# comprimir los archivos de la fuente en dist/ a un zip
make package
Créditos
- Autor: Nikita Prokopov @nikitonsky
- Basado en: Fira Mono
- Inspirado por: Hasklig