¿Por qué no debería usar caracteres Unicode para simular estilos tipográficos (como minúsculas o guiones)?


129

Unicode contiene varios caracteres que parecen variantes estilizadas tipográficamente de los caracteres del alfabeto latino básico y que permiten escribir textos en los estilos tipográficos correspondientes sin recurrir al marcado o similar. Por ejemplo, uno puede simular:

  • Letras minúsculas:

    ʙᴇʜᴏʟᴅ ᴛʜɪꜱ ꜰᴀɴᴄɪʟy ᴇɴᴄᴏᴅᴇᴅ ᴛᴇxᴛ.

  • Guión:

    𝓑𝓮𝓱𝓸𝓵𝓭 𝓽𝓱𝓲𝓼 𝓯𝓪𝓷𝓬𝓲𝓵𝔂 𝓮𝓷𝓬𝓸𝓭𝓮𝓭 𝓽𝓮𝔁𝓽.

  • Carta negra:

    𝕭𝖊𝖍𝖔𝖑𝖉 𝖙𝖍𝖎𝖘 𝖋𝖆𝖓𝖈𝖎𝖑𝖞 𝖊𝖓𝖈𝖔𝖉𝖊𝖉 𝖙𝖊𝖝𝖙.

Esto generó interés en Stack Exchange (por ejemplo, aquí , aquí y aquí ) y se criticaron tales técnicas. Pero, ¿qué puede salir mal cuando los uso?


224
Estoy leyendo esto desde mi teléfono y no puedo ver los dos últimos textos elegantes.
Scimonster

22
Porque es ilegible en algunos dispositivos: i.stack.imgur.com/kM73J.png
Chris Kent

15
Debido a que algunos de nosotros queremos ver páginas web en lo que NOSOTROS consideramos fuentes legibles (y tamaños, colores, etc.), entonces usamos, por ejemplo, hojas de estilo CSS del usuario para anular los estilos de autor. Podrías notar que, aunque tus tres ejemplos se muestran en mi dispositivo, aparentemente tal como pretendes que aparezcan, para mí solo son legibles. ¿Por qué colocarías tus antojos artísticos por encima de la facilidad de lectura de tus lectores?
jamesqf

38
Aquí hay una observación interesante: Edge no puede encontrar texto en las últimas dos muestras, y Chrome no puede encontrar texto en la primera. (Pruebe Ctrl + F'ing para BEHOLD en ambos navegadores). No he comprobado Firefox.
Cisma

22
@Schism Firefox no encuentra ninguno de ellos. Parece que Chrome probablemente usa la normalización NFKC / NFKD antes de buscar, lo que descompone el guión y el texto del boletín en latín básico. Firefox no parece hacerlo. Edge ... está haciendo algo raro.
Bob

Respuestas:


224

General

Esos caracteres no están destinados al texto regular del alfabeto latino, sino a la fonética, el texto del alfabeto cirílico, para su uso como símbolos matemáticos (que representan variables) o similares. La única forma compatible con Unicode para codificar texto en el alfabeto latino básico es usar los caracteres predominantemente utilizados para este propósito (es decir, del bloque Unicode latino básico).

Al igual que con muchos otros estándares, debe pensar dos veces antes de violar Unicode. Además, Unicode comprende tantos sistemas de escritura, casos de uso y cosas que simplemente existen para la compatibilidad con otros estándares 1 que comprender completamente todas sus motivaciones es una ciencia propia. En pocas palabras, a menos que realmente sepas lo que estás haciendo, es extremadamente probable que algo se rompa y que ni siquiera hayas pensado remotamente.

Ejemplos específicos

Accesibilidad

El texto codificado no solo existe para representarse en alguna fuente. También puede ser interpretado, por ejemplo, por lectores de pantalla. Y un lector de pantalla no debería necesitar adivinar si

𝓽𝓱𝓮

está destinado a ser el artículo definido o el producto matemático 2 de las variables 𝓽, 𝓱 y 𝓮, para lo que están hechos esos caracteres. El mejor comportamiento será, por lo tanto, deletrear estos caracteres, por ejemplo, diciendo literalmente lo siguiente:

negrita pequeña t, negrita pequeña h, negrita pequeña e

No debería decir simplemente "el" en su lugar porque entonces no leería correctamente los textos matemáticos cuyos símbolos forman una palabra pronouncable. 3

Portabilidad

Si su texto está bien representado en su máquina, esto no significa que también estará en el lector. El ejemplo más obvio es que el lector no tiene ninguna fuente que admita estos caracteres o que el texto lo representa un software que no admite fuentes de reserva. Es cierto que esto se está volviendo cada vez menos común. Sin embargo, tenga en cuenta que algunas personas como los disléxicos necesitan fuentes especiales que tienen menos probabilidades de admitir estos caracteres.

Pero incluso si la máquina del lector solo usa una fuente diferente, esto puede hacer que el texto sea considerablemente menos legible. Para un primer ejemplo , esto se representa con dos fuentes diferentes:

𝓉𝒽ℯ renderizado con FreeSerif y STIX

Free Serif procesa el texto como probablemente desearía que se procesara al usar caracteres especiales para simular texto, es decir, simular escritura a mano con un trazo continuo. Sin embargo, estos caracteres están hechos para usarse como símbolos matemáticos, conectando lo que no tiene sentido. Por lo tanto, el renderizado por STIX , que está diseñado específicamente para fines matemáticos, está más en línea con la forma en que estos caracteres están destinados a ser utilizados.

En un segundo ejemplo , suponga que usted o el lector escriben en cursiva “сᴜт мy вᴀʀ” por alguna razón. Con una buena fuente, obtendrás 4 :

сᴜт мy вᴀʀ en vertical y en cursiva.  la cursiva se lee como "cum my bar"

La razón de esto es que las pequeñas mayúsculas se simularon (parcialmente) con letras cirílicas, y las cursivas cirílicas a veces se ven muy diferentes de sus contrapartes verticales . De nuevo, este es el comportamiento correcto.

Capacidad de búsqueda

Como primer ejemplo, considere lo que desea que haga una búsqueda razonable con el carácter character (escritura matemática W ). Suponga que la búsqueda tiene dos modos, el modo predeterminado y el modo exacto (generalmente denominado mayúsculas y minúsculas ). Este personaje debería ser:

  • se encuentra al buscar w o W en el modo predeterminado: para aquellos que no desean molestarse en ingresar o copiar y pegar el carácter especial en el campo de búsqueda;

  • encontrado al buscar 𝒲 en modo exacto - para aquellos que desean buscar donde se menciona la variable correspondiente en un documento matemático³;

  • no se encuentra al buscar 𝓌, w o W en modo exacto debido a interrumpir una búsqueda similar a la anterior.

Sin embargo, si usa este carácter para simular texto normal, se debe encontrar al buscar W o 𝒲 en modo exacto, lo cual está en conflicto con lo anterior.

Como segundo ejemplo, considere que los caracteres cirílicos nunca deben encontrarse al buscar caracteres latinos y viceversa, ya que son cosas completamente diferentes. Sin embargo, si usa caracteres cirílicos para simular minúsculas latinas, necesita que esto suceda, si no desea que se rompa la capacidad de búsqueda. Esto llevaría a las personas a encontrar muchas cosas inútiles si buscan una palabra rara del alfabeto latino que coincida con las pequeñas mayúsculas falsas de alguna palabra popular del alfabeto cirílico (y viceversa).

Una opción de búsqueda exacta no puede resolver este problema, ya que está reservado para otros fines en esos alfabetos.

En general , es imposible construir una búsqueda (sin una cantidad increíble de opciones) que no se rompa usando caracteres especiales para simular texto latino con estilo.


1  ¿Sabes que XKCD acerca del inevitable fracaso de unificar estándares ? Bueno, Unicode tuvo éxito.
2  o lo que sea que esté el operador vacío en la convención pertinente
3  Soy consciente de que muy pocos textos matemáticos hoy en día admiten esta codificación o algo compatible, pero el punto es que algún día esperan hacerlo. Su texto que abusa de Unicode todavía puede estar alrededor y leerse entonces.
4  A menos que esté buscando macedonio o serbio, en el que obtendrá un resultado diferente pero aún indeseable.


Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
Journeyman Geek

1
¿Qué pasa con el tercer ejemplo? ¿Por qué el texto del boletín negro incluso existe en Unicode en lugar de solo una fuente?
posfan12

2
@ posfan12: Se utiliza como un alfabeto matemático distinto, como los caracteres del guión. (Tenga en cuenta que la numeración de ejemplos aquí no tiene nada que ver con los puntos en la pregunta.)
Wrzlprmft

3
Su pequeño ejemplo de cpas sugiere un rompecabezas / competencia: encuentre una oración válida que se convierta en una oración diferente cuando esté en cursiva ... (ambos interpretados por lectores humanos latinos, por ejemplo)
Hagen von Eitzen

67

¿Qué puede ir mal? Bueno, veo esto:

ingrese la descripción de la imagen aquí

en Firefox 50.1.0 en Windows 7.

El problema de los glifos faltantes , en este caso en un dispositivo móvil, se ilustra con más detalle en una imagen dada por el usuario Chris Kent en un comentario , que recorté y redimensioné del original :

ingrese la descripción de la imagen aquí

Y los comentarios de los usuarios amablemente contribuyeron con otro ejemplo:

ingrese la descripción de la imagen aquí



77
@Lilienthal Estoy impresionado por cuántos años debe haber pasado sin buscar o instalar actualizaciones. Quiero decir, todavía estoy usando algo basado en Firefox 3.5 en algunos dispositivos, pero no tengo exactamente una opción en el asunto (dispositivo demasiado bueno, pero no hay un navegador utilizable más nuevo disponible)
mtraceur

16
@Lilienthal En algún momento en 2020, los números de versiones principales de Firefox pueden requerir números de 64 bits. Poco después de eso, el número de versión ocupará más espacio que el programa real. En un intento por recuperar la cuota de mercado, los números de versión de Chrome necesitarán planetas completos para almacenarlos.
Andrew Morton

2
¿Saben ustedes a cuántas vulnerabilidades de seguridad conocidas y activas se están exponiendo al usar navegadores tan antiguos?
Zach Lipton

3
@Zach Lipton: ¿Te das cuenta de que eso está muy abajo en la lista de mis prioridades? # 1 es tener algo que realmente puedo usar. Aunque tal vez la gente de Firefox (y muchos otros) han adoptado un nuevo paradigma: la seguridad a través de la inutilidad.
jamesqf

29

Estoy teniendo un problema XY con esto.

Y y X parecen más pequeños que el resto del texto

Aquí, vemos que Y y X parecen más pequeños que el resto del texto. En ciertos niveles de zoom parecen tener el mismo tamaño, pero esto parece haber expuesto un problema con estos glifos en particular en esta fuente en particular.


Puedo ofrecer tres posibles explicaciones de lo que está viendo: 1) Mala sugerencia . 2) Se utiliza una fuente alternativa para todo excepto x e y. 3) Diseño de fuente incorrecto: las mayúsculas pequeñas se diseñaron para ser ligeramente más grandes que las letras minúsculas (que es una opción válida) y luego se usaron para caracteres fonéticos y cirílicos Unicode, lo cual no es una buena opción ya que, por ejemplo, en el uso fonético, estos caracteres Hay que armonizar con los caracteres latinos básicos. - De cualquier manera: los puntos 1) y 3) no se deben al abuso Unicode. El punto 2) ya se aborda en las otras respuestas.
Wrzlprmft

12
@Wrzlprmft: Por definición, son abuso Unicode porque Unicode no tiene mayúsculas pequeñas. Lo que sí tiene Unicode son letras que parecen pequeñas mayúsculas en los bloques de alfabetos fonéticos y el bloque latino Extended-D. Específicamente, ni los dos bloques fonéticos ni el bloque latino Extended-D contienen la letra que parece minúscula X , por lo tanto, supongo que la X proviene de otro lugar, probablemente el bloque cirílico. La diferencia no es causada por 1, 2 ni 3. Es causada por la letra que pertenece a otro alfabeto.
slebetman

@slebetman: La x minúscula es solo una x minúscula normal (puede copiar el carácter de la pregunta e inspeccionarlo usted mismo). Y una x minúscula tiene que armonizar con los caracteres fonéticos, porque también se usa como carácter fonético. También debe tener la misma altura que los caracteres minúsculos cirílicos, ya que no desea que las palabras cirílicas destaquen del texto latino (y viceversa).
Wrzlprmft

19
Upvoted por la jajaja en "XY problem" :)
Andrew Morton

13

El uso de caracteres no latinos que se parecen un poco a los latinos lo coloca en compañía de spammers, vendedores de porno y diseminadores que quieren que su texto sea inescrutable, indisociable y repudiable. ("¡Nunca dije que era seguro! ¡Dije que era sigma-alpha-integral-sign-epislon! ¡No me pueden demandar!")

Si estás cómodo en ese club, entonces adelante.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.