2009-12-29 28 views
11

¿Cuál es la mejor manera de presentar el espaciado adicional que debe venir entre oraciones (usando [X] HTML + CSS)?Espaciado entre oraciones

<p>Lorem ipsum. Dolor sit amet.</p> 
       ^^ wider than word spacing 

Desde HTML y XML tanto hay que plegar el espacio en blanco, los dos espacios anteriores debe comportarse como un único espacio.

¿Qué opciones hay? & Thinsp; Hay unos pocos obvios a continuación, ¿qué otros existen? & Thinsp; (¿Algo en CSS3?) & Thinsp; ¿Qué inconvenientes, si existen, existen para estos, incluidos los diferentes navegadores? & Thinsp; (¿Cómo los espacios de no separación por debajo de interactuar con el ajuste de línea?)

  • ..ipsum. &nbsp;Dolor..
  • ..ipsum.&nbsp; Dolor..
  • ..ipsum.&nbsp;&nbsp;Dolor..

Hay una gran cantidad de FUD en la red, que afirma que esta fue inventado para máquinas de escribir, pero puede verlo en documentos como el Declaration of Independence de los Estados Unidos. & thinsp; (Y sí, me doy cuenta de que no debes seguir todas las convenciones de hace más de doscientos años, la DoI es simplemente un ejemplo útil que muestra esto es anterior a las máquinas de escribir y las fuentes monoespaciadas.) & Thinsp; O un tipógrafo alegando que el additional space is distracting — después de cambiar el color de fondo para que el ejemplo no pueda ser otra cosa.

Para decirlo sin rodeos, aunque aprecio las opiniones y la discusión sobre si se debe usar espaciado adicional o no (que no está relacionado con la programación), eso no es lo que estoy pidiendo. Supongamos que es un requisito, ¿cuál es la mejor manera de implementarlo?

+0

Sí, hay diferentes reglas en diferentes partes del mundo, pensé que estaba implícito que estoy siguiendo las reglas que especifican esto. :) (El único inconveniente es que al parecer tengo que hacer una compensación debido a HTML ...) –

+0

Este total de "dos espacios después de un período sin sentido" se inventó cuando usamos tipos de letra monoespaciados y dispositivos de salida tontos. Los motores de tipografía modernos hacen esto por ti. ¡* No * anula su comportamiento predeterminado! –

+2

Frank: La Declaración de Independencia no fue escrita, pero usa esto. Desafortunadamente no puedo usar un motor de tipografía moderno como TeX, debo usar HTML. –

Respuesta

3

Envuelve cada oración en un lapso, y diseña el lapso quizás. (No es una gran solución).

+0

Había pensado en esto y casi lo incluí en mi lista de "solución obvia", pero lo descarté. Sin embargo, actualmente es la única solución sugerida que cumple los requisitos con los menores inconvenientes de presentación. (A pesar de los inconvenientes del código fuente). Utilicé relleno en mi muestra. –

+0

Tengo curiosidad por qué fue downvoted, ¿podría dejar un comentario? –

+0

Sí, esta idea es posiblemente la solución más práctica hoy en día, a pesar de que implica agregar un montón de marcado. –

13

Puede utilizar white-space: pre-wrap para preservar las secuencias de espacios, sin dejar de ajustar el texto:

<p style="white-space: pre-wrap;">Lorem ipsum. Dolor sit amet.</p> 

Esto no es compatible en Internet Explorer hasta que IE 8 en IE 8 modo, ni en Firefox hasta 3.0.

También puede usar &emsp; o &ensp; para los espacios uno em o uno en de ancho. No sé qué tan extendido es el soporte de estos, pero parecen funcionar en los últimos WebKit y Firefox en Mac OS X.

Una secuencia de dos caracteres &nbsp; evitará saltos de línea en ese espacio; eso es lo que significa &nbsp;, espacio sin interrupciones. La secuencia A sentence. &nbsp;Another. hace que el &nbsp; aparezca en la segunda línea, sangrando ligeramente el texto, lo que probablemente sea indeseable. La secuencia A sentence.&nbsp; Another. funciona bien, con salto de línea y sin agregar ninguna sangría adicional, aunque si la usa en texto justificado, con el &nbsp; al final de la línea, evitará que la línea se justifique correctamente. &nbsp; es para el caso de escribir el nombre de alguien, como Mr.&nbsp;Torvalds, o una abreviatura que termina en ., donde la convención tipográfica dice que no debe dividirlo entre líneas para evitar que la gente se confunda y piense que la oración ha finalizado.

Por lo tanto, no se desea usar secuencias de &nbsp;. Como este es un efecto estilístico, recomendaría usar white-space: pre-wrap, y aceptar que el estilo será un poco menos que ideal en plataformas que no lo admiten.

editar: Como se señala en los comentarios, white-space: pre-wrap no funciona con text-align: justify. Sin embargo, probé un sampler of different entities usando BrowserShots (avisos detestables, y algo raro y lento, pero es un servicio bastante útil por el precio, que es gratis). Parece una amplia variedad de navegadores, en una amplia variedad de plataformas, admite &ensp; y &emsp;, algunas que aún no usan espacios, por lo que el procesamiento no es tan malo, y solo IE 6 en Windows 2000 realmente renderiza ellos rotos, como cajas. BrowserShots no me permite elegir los combos exactos de navegador/SO que deseo, así que no puedo elegir IE 6 en XP para ver si eso es diferente. Entonces, esa es una respuesta plausible siempre que puedas vivir con IE 6 en Win2K (y tal vez en XP) roto.

Otra posible solución sería encontrar (o crear) una fuente que tenga un par de interletraje para la combinación de caracteres ".", Para separarlos más ampliamente. Con soporte @font-face en todos los navegadores más importantes en este momento, incluyendo IE de vuelta a IE 5.5 (aunque IE usa un formato diferente al de los otros navegadores), usar tu propia fuente es realmente razonable y recurrir a la fuente predeterminada de los usuarios si no compatible no rompería nada.

Una última posibilidad podría ser convencer al comité de CSS para que agregue una característica de estilo que le permita especificar que desea un espaciado más amplio al final de las oraciones (que estaría determinado por un período seguido de un espacio; acrónimos y las abreviaturas necesitarían un &nbsp; para evitar obtener el espacio más amplio). Actualmente, el comité de CSS está discutiendo la posibilidad de agregar soporte de tipografía más avanzado, por lo que ahora podría ser un buen momento para comenzar a debatir sobre esta característica.

+0

Esto deshabilita 'text-align: justify', de lo contrario parece que sería la mejor respuesta. –

+1

Hmm. Si te preocupa el espaciado exacto, ¿por qué usarías 'justify'? En ese caso, entonces, probaría ' ' en una variedad de navegadores, y vería si eso funciona para usted. –

+0

Uso el texto justificado por otras razones, pero el espaciado de oraciones aún debe ser más amplio que el espaciado entre palabras. –

2

&nbsp; no es el caracter correcto para usar, semánticamente hablando. Es un espacio sin interrupciones: un espacio que no se usará como un salto de línea. Tal vez use un espacio como &ensp; o un solo &emsp;, o (mi recomendación personal) no se moleste con el anticuado estilo de doble espacio en su página.

3

Quería decir que si su objetivo es anular la implementación predeterminada del espacio en blanco del navegador para proporcionar el espaciado de oraciones "adecuado", en realidad hay some debate en cuanto a lo que constituye el espaciado adecuado. Parece que el "estándar" de doble espacio probablemente sea solo un remanente de cuando las máquinas de escribir usaron fuentes monoespaciales. Mejor cita:

La línea de fondo: profesionales tipógrafos, diseñadores y editores de escritorio deben usar sólo un espacio. Guarde los espacios dobles para mecanografía, correo electrónico, documentos de término (si prescritos por la guía de estilo es usando), o correspondencia personal. Para todos los demás, hagan lo que sea que se sienta bien.

A menos que tenga esto como un requisito estricto, no parece que valga la pena el esfuerzo de tratar de "arreglarlo". (Me doy cuenta de que esta no es una respuesta a su pregunta declarada per se, pero quería asegurarme de que usted conoce esta información, ya que podría influir en su decisión de dedicarle mucho tiempo)

+0

Curiosamente, la encuesta en la página enlazada (actualmente 14584 votos) tiene un 47% a favor del espaciado adicional de frases, con un 8% adicional que aparentemente usa o trabaja con el espaciamiento adicional diario (la tercera opción). –

+0

Personalmente sigo doblando la mayor parte de mi escritura por costumbre, aunque me he dado cuenta de que al escribir en IM o en mi iPhone, he cambiado a un espacio para guardar las teclas (no estoy seguro de por qué todavía uso 2 en otros medios ...) Creo que se ha convertido en algo más estilístico hoy en día que una cuestión de corrección. Me gustaría saber qué diría un editor profesional al respecto. –

+0

Varias fuentes que he leído coinciden en que después de la Segunda Guerra Mundial, las empresas como las revistas y los editores de libros ajustaron muchas prácticas anteriores con el interés de ahorrar papel y dinero; y que tal práctica se convirtió en un precedente para hoy. Esa justificación no se aplica a mí (pero obviamente no es así, ciertamente es posible usar HTML para el diseño de la impresión), pero mi audiencia es diferente de la suya de todos modos. –

1

& nbsp; es el peor método posible, ya que interrumpe la justificación. El preenrollado como se sugiere da un control aproximado pero no se puede justificar.Hay otras entidades espaciales como & thinspace; y & nspace ;, así como un montón de caracteres de espacio Unicode que deberían dar un mejor control y no deberían romper la justificación. Estas entidades son la mejor solución que no es CSS, en mi opinión.

Para un mejor control necesita una solución de CSS. Puede abarcar las oraciones, la elección obvia, o puede abarcar el espacio entre oraciones. Lo último para mí parece ser más incorrecto, pero es más fácil de lograr, especialmente si tiene el hábito común de escribir en dos espacios: simplemente puede buscar y reemplazar todo el espacio-tiempo-período con un lapso alrededor de un espacio. Tengo un javascript que hace esto sobre la marcha para blogger.

No utilice el modelo de caja (relleno a la derecha) ya que romperá el margen derecho del texto completamente justificado (e incluso si no se justifica por completo, hace que las líneas se envuelvan "temprano"). Si abarca el espacio entre oraciones, puede alterar el espaciado entre palabras en estos elementos. Si está ajustando oraciones, puede configurar su párrafo u otro contenedor para tener un espaciado de palabras más grande, y establecer las frases a la normalidad, o puede hacerlo en un solo paso con el selector posterior:

.your_sentence_class: después de {contenido: ""; espaciado de palabras: 0.5em; }

3

Para todos los detractores 'anticuados' y 'monoespaciales': lee un libro.   Los editores profesionales han usado un solo &emsp; entre oraciones desde tiempos inmemoriales, y ES DE ahí viene el estándar monoespacial de dos espacios.   Aprender de la historia en lugar de lanzar retórica sin fundamento, de hecho.   Debo admitir, sin embargo, que un &ensp; se ve mejor en la mayoría de los navegadores: &emsp; es demasiado ancho.   ¿Qué opinas sobre la legibilidad de este párrafo?   El editor de Stackoverflow permite algo de HTML, y estoy usando &ensp; entre todas las oraciones.

+0

Esto parece mucho más un comentario que una respuesta ... – Syon

+1

@Syon, es hablador, pero parece estar respondiendo a la pregunta: "Use'   'o, si cree que se ve bien,'   '" –

+0

Esto contrata un artículo bien investigado aquí http://www.heracliteanriver.com/?p=324 - que señala que em-quadrat (a saber, un espacio doble) se usó después de un período de finalización de la frase durante siglos, hasta la década de 1930 más o menos. –

Cuestiones relacionadas