La font-variant-numeric
propiedad en CSS es compatible con el formato de fuente OpenType al especificar qué glifos numéricos usar en una clase, incluidas variaciones para fracciones, marcadores ordinales y variaciones de estilo, entre otros.
Un poco de contexto
Tendemos a pensar en los números como un glifo estático. Imprime y así es. Sin embargo, los números se parecen mucho más a las letras del alfabeto en el sentido de que pueden tener variantes que, según el contexto, hacen que valga la pena modificar el estilo. Estamos hablando de cosas como fracciones (por ejemplo, 1/4), ordinales (por ejemplo, 1º) e incluso el equivalente de números en mayúsculas y minúsculas. Sin embargo, a diferencia de las letras, estas variaciones no cambian el significado del contenido, aunque brindan un contexto adicional o tienen un impacto en la legibilidad.
El problema con esta propiedad es que fue diseñado para funcionar con fuentes habilitadas para OpenType, un formato de fuente nuevo pero de rápido desarrollo que proporciona un conjunto más extenso de glifos que se pueden usar en diferentes contextos. Es posible que a menudo escuche que se refieren a OpenType como fuentes variables y eso se debe a que contienen una mayor variedad de caracteres que las hacen más flexibles para una variedad de usos. ¡Variaciones para todas las cosas!
El problema es que la disponibilidad de fuentes que pueden aprovechar al máximo font-variant
y font-variant-numeric
es limitada. Hay un número creciente de fuentes compatibles con OpenType, pero hay un subconjunto mucho más pequeño de opciones que hacen uso de todas las funciones que font-variant-numeric
ofrecen y, a menudo, son premium y caras. Richard Butler lo resume muy bien:
Tenemos a nuestra disposición números en 'mayúsculas' llamados numerales de revestimiento o de título, y números en 'minúsculas' llamados numerales de estilo antiguo o de texto ... También se da el caso de que la gran mayoría de fuentes no son modernas ni profesionales, si moderno significa OpenType- Medios habilitados y profesionales diseñados con ambos conjuntos de numerales.
El mayor problema que suele preocuparnos cuando se trata de propiedades CSS es la compatibilidad con el navegador, pero esta propiedad y todas las demás relacionadas font-variant
también están a merced de los diseñadores de fuentes para brindar soporte completo a la mesa.
Eso es un fastidio, pero estamos empezando a ver aparecer fuentes más "modernas" y "profesionales", incluso en el momento de escribir este artículo. Adobe TypeKit anunció que está trabajando para admitir las funciones de OpenType y se rumorea que Google Fonts también está a bordo ahora que Chrome 62 las admite.
Uso básico
Este es el uso más básico de la propiedad:
.fraction ( font-variant-numeric: diagonal-fractions; )
Los navegadores más antiguos no reconocerán eso, pero aceptan font-feature-settings
que desbloquean las mismas funciones con diferentes valores. Podemos emparejar las dos propiedades para un soporte más profundo:
.fraction ( font-feature-settings: frac; font-variant-numeric: diagonal-fractions; )
O bien, podemos adaptar esto para detectar la compatibilidad con el navegador utilizando de @supports
modo que la nueva propiedad solo se sirva a los navegadores compatibles:
.fraction ( font-feature-settings: frac; ) @supports (font-variant-numeric: diagonal-fractions) ( .fraction ( font-feature-settings: frac; font-variant-numeric: diagonal-fractions; ) )
Valores
La font-variant-numeric
propiedad acepta los siguientes valores. El font-feature-settings
valor correspondiente se anota como referencia.
Valores generales
Valor | Descripción | Configuración de funciones |
---|---|---|
normal | Ninguna de las funciones que se enumeran a continuación está habilitada. | N / A |
ordinal | Aplica letras para representar el orden numérico, normalmente en forma de superíndice. | ordn |
slashed-zero | Muestra una forma alternativa de cero con una línea diagonal que lo atraviesa. | zero |
Valores numéricos de cifras
Valor | Descripción | Configuración de funciones |
---|---|---|
lining-nums | Las líneas se numeran verticalmente para que se adhieran a la misma altura y estén alineadas en el mismo plano. | lnum |
oldstyle-nums | Permite una alineación vertical alternativa donde los números no siempre se muestran de manera uniforme en la misma línea de base. | onum |
Valores numéricos de fracciones
Valor | Descripción | Configuración de funciones |
---|---|---|
diagonal-fractions | Muestra fracciones en un formato más pequeño donde el numerador (número superior) y el denominador (número inferior) están divididos por una barra diagonal. | frac |
stacked-fractions | Muestra fracciones en un formato más pequeño donde el numerador y el denominador están apilados uno encima del otro y divididos por una línea horizontal. | afrc |
Valores de espaciado numérico
Valor | Descripción | Configuración de funciones |
---|---|---|
proportional-nums | Permite que los números ocupen su propia cantidad de espacio que no son necesariamente iguales en ancho a otros números. | pnum |
tabular-nums | Muestra números con el mismo tamaño, proporcional y espaciado para un formato limpio en contextos de datos tabulares. | tnum |
La especificación incluye una nota especial sobre el uso de ordinal
porque se parece al sup
elemento de superíndice pero está marcado de manera diferente.
Para superíndices:
sup ( font-variant-position: super; )
Two squared is 22
Para marcadores ordinales:
.ordinal ( font-variant-numeric: ordinal; )
1st
Soporte del navegador
La font-variant-numeric
propiedad forma parte actualmente de la especificación de nivel 3 del módulo de fuentes CSS, que se encuentra en estado de recomendación candidata en el momento de escribir este artículo, lo que significa que puede cambiar en cualquier momento.
Escritorio
Cromo | Borde | Firefox | ES DECIR | Ópera | Safari |
---|---|---|---|---|---|
52 | No | 34 | No | 39 | 9.1 |
Firefox 24-34 (exclusivo) admite la propiedad detrás de la layout.css.font-features.enabled
preferencia cuando se establece en true
.
Móvil
Navegador de Android | Chrome Android | Borde | Firefox | ES DECIR | Opera Android | Safari de iOS |
---|---|---|---|---|---|---|
52 | 52 | No | 34 | No | 39 | sí |