2012-04-05 18 views
5

Mi texto HTML es como esto:Al usar CSS, ¿hay alguna forma de mostrar diferentes caracteres con diferentes tipos de letra?

<p>abcdefghijklmnopqrstuvwxyz</p> 

Lo que yo quiero es mostrar un uso de "Times New Roman", y mostrar oz utilizando "Courier New", y esto se debe hacer uso de CSS, por ejemplo, sin cambios al texto HTML.

En pocas palabras, quiero CSS a automáticamente elija la fuente especificada correspondiente a qué personaje es.
a-n se debe mostrar con "Times New Roman";
o-z shoule se mostrará con "Courier New".

¿Hay alguna manera de lograr esto?

Si se puede resolver este problema, se puede resolver otro problema: mostrar un idioma diferente con una fuente diferente.

Respuesta

7

parece que se puede, al menos en algunos navegadores, usando algo llamado unicode-range Bueno, esto funciona en Chrome, y sorprendentemente, IE. No hay tanta suerte con Firefox y Opera.

Por cierto, más información sobre esto desde http://24ways.org/2011/unicode-range

vivo ejemplo: http://jsfiddle.net/jfcox/3LQyr/

<style> 
@font-face { 
    font-family: Foobar; 
    src: local('Times New Roman'); 
    unicode-range: U+61-6E; 
} 
@font-face { 
    font-family: Foobar; 
    src: local('Arial'); 
    unicode-range: U+6F-7A; 
} 
body{ 
    font-family:Foobar; 
} 
</style> 
<p>abcdefghijklmnopqrstuvwxyz</p>​ 
+0

¡Uy, no las fuentes solicitadas ... bueno, te di un JSFiddle para meterme con :-P – JayC

+0

Muchas gracias. ¿Esta característica será compatible con todos los navegadores en el futuro reciente? –

+0

También se menciona en el Borrador de trabajo del W3C del 4 de octubre de 2011 (http://www.w3.org/TR/css3-fonts/), por lo que hay intentos de hacerlo estándar. * Será un estándar *, por supuesto, es otro problema, y ​​no puedo predecir el futuro, pero llamaría la inclusión una buena indicación. – JayC

1

No se puede usar CSS para cambiar la fuente de los caracteres particulares como se describe, porque los selectores de CSS no seleccionan caracteres individuales: seleccionan elementos HTML.

Por lo tanto, necesitaría crear elementos alrededor de los bloques de texto que necesitan fuentes específicas. Lo ideal sería hacerlo en código del lado del servidor, aunque no sé si eso es práctico para usted. Su servidor necesitaría salida HTML así:

<p><span class="languageOne">abcdefghijklmn</span><span class="languageTwo">opqrstuvwxyz</span></p> 

A continuación, se aplican los tipos de letra en su caso en el CSS:

.languageOne { font-family: "Times New Roman", serif; } 
.languageTwo { font-family: "Courier New", monospace; } 
+0

Lo sé de esta manera, pero solo quiero CSS para hacer esto, no HTML, o el texto HTML se verá feo, pero gracias de todos modos. Es un pequeño sitio estático y escribo todo el texto HTML yo solo. :) –

+0

¡A veces la realidad del desarrollo web es que tienes que aceptar algo de fealdad solo para que las cosas funcionen! :-) – gutch

2

Si los personajes pertenecen a diferentes sistemas de escritura, como el latín y hebreo, o el cirílico y griego, los navegadores menudo de forma automática usa diferentes fuentes para ellos. Sin embargo, esto solo ocurre en la medida en que la página no especifique las fuentes, es decir, se relaciona solo con las fuentes predeterminadas, y las fuentes utilizadas están determinadas por los valores predeterminados del navegador y la configuración del navegador controlada por el usuario.

Aunque la técnica descrita en la respuesta de JayC ofrece una solución parcial, se obtiene una cobertura del navegador mucho mejor al distinguir los textos en diferentes idiomas en el marcado. En un documento bilingüe, basta utilizar el marcado para textos en uno de ellos (el que se usa menos, por razones prácticas). Usar class como en la respuesta de Gutch proporciona la mejor cobertura, pero hoy en día el soporte para los selectores de idioma en CSS está tan extendido que, en su lugar, podría considerar usar el atributo lang más lógico, p.

<h1>Hello − <a lang=ru>Привет</а></h1> 

allí tendría que utilizar las reglas como

[lang=ru] { font-family: ...; } 

(Mi ejemplo utiliza un elemento <a> efectivamente como una variante más corta de <span>.Formalmente, esto solo es posible cuando el texto no está dentro de un elemento <a> externo).

Sin embargo, para el estilo visual, sería justo lo contrario de la selección de fuente por idioma. Realmente parece extraño si la "e" en "Hola" es diferente del cirílico "е" en "Привет" en la misma línea. Casi siempre es mejor usar la misma fuente para todos los idiomas en un documento, si es posible. Esto significa seleccionar una fuente que funcione para todos ellos.

Cuestiones relacionadas