Establecer el peso de la fuente frente a la familia de fuentes en negrita en CSS, ¿cuál es más correcto?

Básicamente, hay dos formas de poner una fuente en negrita en CSS: mediante el font-familyatributo y mediante el font-weightatributo.

Digamos que estoy usando la fuente Raleway , por ejemplo, y he cargado una variante Light, Regular, Semibold y Bold a través de css. Podría poner en negrita un encabezado simple configurándolo en h1{font-family: 'Raleway Bold'}o en h1{font-weight: 700}.

¿Cuál de estos es más correcto, o ambos son iguales?

Tengo dudas de que escribir "font-weight" en css sea correcto, cuando tiene todas las opciones en la familia de fuentes. Por ejemplo: la fuente Raleway tiene todas las opciones, desde clara hasta extra negrita. Entonces, ¿de qué manera es apropiado usar todas las fuentes de la familia, para que no podamos perder el carácter de la fuente?
@poojaa, me he tomado la libertad de editar su pregunta para aclarar el formato y traer la pregunta real más al primer plano. Si siente que he cambiado el significado, siempre puede editarlo usted mismo.

Respuestas (3)

Digamos que hemos cargado una variante de fuente en negrita así:

@font-face {
  font-family: 'Raleway Bold';
  font-style: normal;
  font-weight: 700;
  src: url(path/to/font/raleway-bold.woff2) format('woff2');
}

Yo argumentaría a favor de usar ambos font-familyy font-weighten su especificación de estilo. Por ejemplo:

h1 {
  font-weight: 700;
  font-family: 'Raleway Bold', Helvetica, Arial, sans;
}

Ambos básicamente hacen lo mismo: decirle a su encabezado1 que esté en negrita. Esto no duplicará la negrita ni nada, solo repite que debe estar en negrita.

La razón de esto es bastante simple: si su archivo de fuente no está cargado (sobrecarga del servidor, restricciones del cliente, vudú), su visitante aún verá una fuente en negrita (en este caso, una Helvética en negrita falsa) y podrá distinguir entre un título y el cuerpo del texto, que no sería el caso si solo hubieras especificado el font-family.

Vea en esta imagen que el conjunto superior es Raleway y Raleway Italic pero tiene el Raleway Italic apropiado cargado con:

<link href='https://fonts.googleapis.com/css?family=Raleway:500,500italic' rel='stylesheet' type='text/css'>

La parte inferior solo está cargando Raleway. Como resultado, el conjunto inferior tiene cursiva Raleway y FAUX Raleway. Tenga en cuenta las diferencias en minúsculas "a" y "k", por ejemplo, entre la cursiva real y la cursiva falsa. Una fuente bien diseñada tendrá diferencias entre regulares, negritas y cursivas que no obtendrá si no las carga.

ingrese la descripción de la imagen aquí

El uso de un nombre de familia y solo la configuración de pesos aún le dará el peso correcto en el caso de que los archivos de fuentes no se carguen. La única razón para usar ambos sería por razones de compatibilidad.
Estás confundido. Su ejemplo de fuente de Google no solo se refiere a la cursiva de Raleway como simple font-family: 'Raleway'(contradiciendo su ejemplo en negrita anterior) sino que, además, Independientemente de nombrar a toda la familia Ralewayo cada variante individualmente con diferentes nombres de familias de fuentes, no tiene ninguna relación con la aplicación de falso o no. . font-family: 'Raleway Bold', Helvetica, Arial, sans;Incluso su propio ejemplo demuestra que este es un método incorrecto, ya que lo ha proporcionado Helvetica Bolde Arial Boldindividualmente porque esa es la forma incorrecta de poner en cascada las variantes de fuentes.

Si bien ambas formas le darán el resultado correcto, la forma más correcta sería usar una sola familia de fuentes para agrupar todas las diferentes variantes de pesos y estilos. Es la misma forma en que usa las fuentes del sistema (desde 'Arial' hasta 'sans-serif') y, de hecho, si usa las fuentes de Google para cargar Raleway, estaría usando la ruta de una sola familia de fuentes.

Describamos varias razones por las que este es el método correcto.

Reduce la complejidad de CSS y, en última instancia, el tamaño del archivo.

Tener una sola familia de fuentes significa que puede definir un elemento contenedor completo con la familia de fuentes, y solo ciertos elementos con diferentes pesos/estilos. Tome lo siguiente, por ejemplo:

html {
  font-family: Raleway;
}
.bold {
  font-weight: 700;
}
.italic {
  font-style: italic;
}
.footer {
  font-family: Arial;
}

<p>I'm raleway font, <span class="bold">and I'm raleway bold</span></p>
<div class="bold italic">I'm Raleway Bold Italic!</div>
<div class= footer>I'm <span class="bold">Arial Bold,</span> w/ the same class!</div>

Fíjate en lo agradable y conciso que es este CSS. No necesitábamos especificar "RalewayBold" como familia de fuentes para .bold, ni "RalewayItalic" para nuestro .italic. De hecho, ni siquiera necesitamos especificar una variante en negrita y cursiva, ya que nuestras clases simplemente funcionarán. Además, si .bold está dentro de nuestro .footer, será negrita Arial y no Raleway, porque simplemente hereda Arial del contenedor de pie de página.

Es la forma en que lo hace el navegador.

Lo anterior es esencialmente cómo la hoja de estilo interna del navegador define las fuentes mediante el uso de estilos mínimos y la naturaleza en cascada inherente de CSS.

Es la forma en que la industria lo hace y lo ha hecho.

Las principales propiedades web, aplicaciones y editores lo hacen de esta manera. Google, Facebook, NYT, ESPN, etc. definen y usan fuentes de esta manera.

No solo eso, sino que las interfaces de usuario anteriores al CSS o incluso a Internet especifican familias de fuentes únicas y eligen variantes basadas en diferentes especificaciones de peso y estilo. Cargue Microsoft Word, KeyNote, Google Docs, incluso un antiguo WordPerfect de finales de la década de 1990 y abra el menú desplegable de fuentes; Verá el nombre de la familia de fuentes "Arial" en la lista; no "Arial" seguido de "Arial Bold" seguido de "Arial Italic", etc.

Simplemente cargue desde Google Fonts.

Si carga Raleway desde el repositorio webfonts gratuito en Google Fonts, verá que Raleway se define con un solo nombre de familia:

https://fonts.googleapis.com/css?family=Raleway:400,400cursiva,500,500cursiva,700,700cursiva

@font-face {
  font-family: 'Raleway';
  font-style: normal;
  font-weight: 400;
  src: url(https://...Raleway-Regular.woff2) format('woff2');
}
@font-face {
  font-family: 'Raleway';
  font-style: normal;
  font-weight: 700;
  src: url(https://...Raleway-Bold.woff2) format('woff2');
}
@font-face {
  font-family: 'Raleway';
  font-style: italic;
  font-weight: 500;
  src: url(https://...Raleway-MediumItalic.woff2) format('woff2');
}
@font-face {
  font-family: 'italic';
  font-style: normal;
  font-weight: 700;
  src: url(https://...Raleway-BoldItalic.woff2) format('woff2');
}
¿Este método no ignora las variaciones entre los estilos de fuente para los falsos?
@Ryan No, en absoluto. De hecho, el nombre de la familia de fuentes (ya sea agrupando correctamente la familia como Ralewaycon variantes de peso/estilo, o definiendo incorrectamente variantes individuales Raleway Boldy Raleway Italiccomo familias de fuentes individuales) no influye en la aplicación de variaciones falsas o no. De hecho, agrupar correctamente la familia bajo el mismo nombre ayuda al navegador a elegir una variación más cercana para aplicar un estilo falso, mientras que nombrar incorrectamente cada variación por separado mantiene al navegador en la oscuridad de las fuentes disponibles para aplicar variaciones si la fuente deseada no está cargada.
(1) Simplemente cargue las fuentes de Google : para sitios web seguro, pero hay muchos otros casos en los que se usa html/css donde no se garantiza una conexión a Internet y tiene que cargar las fuentes localmente, (2) Reduce la complejidad de CSS y, en última instancia, el tamaño del archivo : por lo que reducirá 1 kb en un sitio o aplicación que tiene docenas de MB, el cliente se sorprenderá de lo rápido que carga su aplicación, (3) es la forma en que lo hace el navegador/la industria : navegadores predeterminado a falso, y de todos modos, la 'industria' no siempre es correcta ni sigue las mejores prácticas (solo mire flexbox)
navegadores por defecto a falso ¿Qué? Está claro que no sabes de qué estás hablando. Cuando especifica font-family:Arial; font-weight:bold;(que, nuevamente, es la forma correcta de hacerlo, independientemente de si es Arial o Raleway), ¿piensa que el navegador está aplicando una negrita falsa a una fuente Arial normal? Incorrecto. El navegador está cargando el tipo de fuente ArialBold como lo define el sistema y solo si no hay una fuente exacta disponible, aplicará un estilo falso a la fuente que mejor coincida según el nombre de la familia de fuentes, ¡por lo que deben ser iguales! No puedo decir "Haz esto por Arial, pero no por Raleway".

Esta es la cuestión: si hace la pregunta sobre Raleway, una fuente web programada para css, ambas formas funcionan igual de bien. En este caso, use font-weight porque es el curso de acción "correcto" que será más fácil de cambiar y controlar sin cambios importantes en el código.

Ahora comienza a tener problemas una vez que incrusta una fuente usted mismo, una fuente que no está necesariamente planificada para css y los pesos pueden no coincidir con los números.

Debido a esto, un error muy común en las fuentes incrustadas, extremadamente común en las fuentes que no están en inglés, es que css "en negrita" o "aclara" la fuente automáticamente y el resultado es muy malo.

Por lo tanto, le recomiendo que si usa una fuente web como las fuentes en Google Fonts, siga adelante y use los números en font-weight, pero cuando incruste una fuente usted mismo, manténgase seguro y use font-family para cada peso individual por separado. .