Un módulo para aplicar reglas tipográficas probadas en el tiempo a sus documentos para mejorar la legibilidad.
La tipografía es un arte, tanto como una ciencia, que se ha refinado en el transcurso de la historia. Trabajando implacablemente para mejorar la legibilidad y el flujo del texto, los tipógrafos de todo el mundo han ideado muchas reglas que a menudo se descartan en los medios de publicación de hoy. Este módulo tiene como objetivo corregir esta situación.
Este es en gran medida un trabajo en progreso y es posible que no lo encuentre adecuado para sus propias necesidades. Puede contribuir de muchas maneras para mejorar este proyecto: enviando solicitudes de extracción, sugeriendo ideas o documentando las propias convenciones tipográficas de su país.
typographer ( input , configuration ) ; input es una cadena o un elemento HTML (ver limitaciones sobre la entrada HTML).
configuration es un objeto con las siguientes propiedades opcionales:
locale : el código de idioma a usar. El valor predeterminado es en .output_format : ya sea text o html , formato utilizado para reemplazos (por ejemplo, u00a0 o para espacios no roto). El valor predeterminado es text .disable_rules : matriz de reglas/reglas para deshabilitar (por ejemplo, ['ruleset/name1', 'ruleset2/name2', 'ruleset3', ...] ).Dependiendo del tipo de entrada , el tipógrafo devolverá una cadena (cuando use una entrada de cadena) o actualizará el elemento y sus descendientes directamente en el DOM.
const fixed = typographer (
'Bonjour typographer: enchanté !' ,
{
locale : 'fr_FR' ,
output_format : 'html'
}
) ;
console . log ( fixed ) // 'Bonjour typographer : enchanté !' const elements = document . querySelectorAll ( '.fixTypography' )
[ ] . forEach . call ( elements , element => {
typographer (
element ,
{
locale : 'fr_FR' ,
output_format : 'html'
}
) ;
} ) ; La primera motivación para este proyecto son los espacios , como sabrán, hay más de un solo tipo de espacios, veremos algunos:
Similar al espacio normal, pero no se puede romper en dos líneas al envolver. Ambas palabras (separadas por un espacio no roto) siempre terminarán en la misma línea.  es un espacio más estrecho que el espacio normal.  es del mismo tamaño que el espacio delgado pero no se puede romper en dos líneas.Hay más que estos cuatro tipos de espacios, pero se entiende la idea. Los espacios no rompedores son realmente útiles para evitar un envoltura extraña.
Considere 451 °F , ¿no sería extraño tener la unidad en una línea separada que el valor? Para eso son los espacios no rompedores. Desea usar espacios no roto.
Esto nunca puede ser perfecto y hay muchos casos en los que el tipógrafo luchará, por ejemplo, el sistema internacional de unidades especifica que las unidades deben ser precedidas por un espacio (uno no roto), pero es bastante difícil asegurarse de que algo sea una unidad. Algunas unidades pueden ser muy ambiguas (por ejemplo, V para Volt, también puede ser el número romano para 5).
Agregaremos un espacio no roto en las unidades de las que estamos bastante seguros, y le dejaremos que lo haga por las ambiguas.
Si usa una entrada de cadena HTML con una configuración regional que requiere espacios no rompedores (regulares o estrechos) antes de las señales de puntuación, debe asegurarse de que su cadena no contenga ninguna etiqueta que no deba transformarse, como <code> o <style> por ejemplo. De lo contrario, terminará con cosas como color : red ; que rompería su estilo o muestras de código.
El uso de una entrada de elemento HTML es segura ya que filtramos nodos que no deben transformarse como los mencionados anteriormente (y otros). Tenga en cuenta que si un elemento dentro de su entrada contiene algunos de esos tipos de nodos, omitiremos todo el elemento contenedor.
Hacemos todo lo posible para arreglar automáticamente tanto como podamos, pero la primera regla del tipógrafo es: "En caso de duda, deja las cosas como son".
Esto es donde se vuelve complicado, las reglas difieren entre países, e incluso en un país determinado, puede haber más de un estilo recomendado. Por defecto, nos centraremos en aplicar reglas tipográficas indiscutibles, en un enfoque típico de 80-20.
Nota: Canadá (francés) utiliza diferentes reglas para la puntuación.
, no debe tener espacio antes, y un espacio regular después.. no debe tener espacio antes, y un espacio regular después.: Debe tener un espacio no roto antes y un espacio regular después.; debe tener un espacio estrecho no roto antes y un espacio regular después.? debe tener un espacio estrecho no roto antes y un espacio regular después.! debe tener un espacio estrecho no roto antes y un espacio regular después.« , ‹ Debe tener un espacio regular antes y un espacio estrecho sin roto después.» , › Debe tener un espacio estrecho no roto antes y un espacio regular después.“ , ' Debe tener un espacio regular antes y no hay espacio después.” , ' No debería tener espacio antes y un espacio regular después.( Debería tener un espacio regular antes y no hay espacio después.) no debe tener espacio antes y un espacio regular después.[ Debería tener un espacio regular antes y no hay espacio después.] no debe tener espacio antes y un espacio regular después.- (guión) no debe tener espacio antes ni después.— (EM, Long) o- – en, medio) debe tener un espacio regular afuera y un espacio no roto en el interior cuando se combina con algún texto.… , ... , o . . . no debe tener espacio antes y un espacio regular después. Excepto cuando entre paréntesis cuadrados o paréntesis donde no debe haber espacio antes ni después.' No debería tener espacio antes ni después., no debe tener espacio antes, y un espacio regular después.. no debe tener espacio antes, y un espacio regular después.: No debe tener espacio antes, y un espacio regular después.; no debe tener espacio antes, y un espacio regular después.? no debe tener espacio antes, y un espacio regular después.! no debe tener espacio antes, y un espacio regular después.“ , ' Debe tener un espacio regular antes y no hay espacio después.” , ' No debería tener espacio antes y un espacio regular después.« , ‹ Debe tener un espacio regular antes y un espacio estrecho sin roto después.» , › Debe tener un espacio estrecho no roto antes y un espacio regular después.( Debería tener un espacio regular antes y no hay espacio después.) no debe tener espacio antes y un espacio regular después.[ Debería tener un espacio regular antes y no hay espacio después.] no debe tener espacio antes y un espacio regular después.- (guión) no debe tener espacio antes ni después.— (em, largo) o – (en, medio) no debe tener espacio antes ni después. El DASH EM debe tener un espacio antes cuando se usa para indicar la fuente de una cita.… , ... , o . . . Puede tener espacios regulares antes y después, sin espacio antes y un espacio regular después, o un espacio antes y sin espacio después.' No debería tener espacio antes ni después. La mayoría de las veces puede simplemente usar el código de idioma general, pero si encuentra que las transformaciones aplicadas son incorrectas, intente usar el código local específico para su país. Por ejemplo, el francés canadiense ( fr_CA ) utiliza diferentes reglas de espaciado para la puntuación, por lo que el uso de fr en ese contexto probablemente producirá resultados incorrectos.
en - Código de idioma general para inglésen_US - Estados Unidosen_GB - Reino Unidoen_CA - Canadáen_AU - Australiaen_NZ - Nueva Zelandaen_IN - Indiafr - Código de idioma general para francésfr_FR - Franciafr_BE - Bélgicafr_CA - Canadáfr_CH - suizofr_LU - Luxemburgofr_MC - Mónacode - Código de idioma general para alemánde_DE - Alemaniade_AT - Austriade_BE - Bélgicade_CH - suizode_LI - liechtensteinde_LU - Luxemburgoes - Código de idioma general para españoles_ES - Españaes_AR - Argentinaes_BO - Boliviaes_CL - Chilees_CO - Colombiaes_CR - Costa Ricaes_DO - República Dominicanaes_EC - ECUADORes_SV - El Salvadores_GT - Guatemalaes_HN - Hondurases_MX - Méxicoes_NI - Nicaraguaes_PA - Panamáes_PY - Paraguayes_PE - Perúes_PR - Puerto Ricoes_UY - uruguayes_US - Estados Unidoses_VE - Venezuela