Cómo acceder a la forma inicial árabe BEH, desde una fuente que coloca el glifo en una ranura Unicode de lugar no convencional

(Soy nuevo tanto en árabe como en cosas relacionadas con Unicode, por lo que podría estar pasando por alto algún detalle evidente).

Entonces, estoy usando la fuente SIL Lateef y quiero acceder al glifo de forma inicial BEH, en HTML. (Porque, en MSA, "with/through" se traduce como prefijo ﺑِ, por lo que quiero incluirlo en su forma inicial para dejar claro que es un prefijo y no una palabra en sí misma).

El glifo de la forma inicial BEH tiene el código Unicode U+FE91 . Sin embargo, Lateef no incluye el glifo en esta 'ubicación' (no estoy completamente seguro de cómo llamarlo), y en su lugar incluye el glifo en U+1016F ("Griego Acrophonic Carystian Five Hundred"), y luego usa una tabla de sustitución para usar él. (El uso de la tabla de sustitución es lógico, pero no entiendo por qué Lateef coloca el glifo en este lugar extraño).

Como mi aplicación definitivamente usa Lateef, incluida como fuente web, decidí hacer referencia a ella como U+1016F en javascript ( \u{1016F}) o HTML ( 𐅯o 𐅯) --- feo, lo sé, porque no es semántico, pero no pude decidir sobre una mejor manera. Sin embargo, a pesar de que el elemento en cuestión estaba usando Lateef como fuente, Chrome mostró el "Greek Acrophonic Carystian Five Hundred" en su lugar:

¡Este no es el glifo de la forma inicial de BEH!

Mis preguntas entonces, son:

  • ¿Cómo es que Chrome muestra el glifo "Greek Acrophonic Carystian Five Hundred", cuando el elemento HTML claramente usa Lateef, y el carácter Unicode está correctamente referenciado, y Lateef de hecho incluye el glifo de forma inicial BEH en U + 1016F?
  • ¿Es posible mostrar el BEH inicial de Lateef? (Aparte de editar la fuente para incluir también el glifo en la ubicación correcta).
  • ¿Es esto un error/malentendido de mi parte, o una rareza real en nombre de Chrome, Ubuntu/Chrome, Unicode o HTML?
¿Puede inspeccionar el elemento en Chrome para verificar si realmente está usando Lateef o una fuente alternativa para representar ese glifo en particular? Tal vez haya algo en la tabla de sustitución que haga que Chrome crea que Lateef en realidad no incluye el punto de código U+1016F. Y sí, un lugar muy extraño para ponerlo, muy diferente al SIL, habría pensado.
Inspeccionar el elemento en Chrome para verificar que se especifica Lateef: i.imgur.com/yN26bvG.png . Pero realmente no sé cómo funcionan los navegadores con las fuentes, tal vez sea cierto que Chrome, por alguna razón, simplemente no sabe/piensa que Lateef tiene un carácter allí y, por lo tanto, usa una fuente diferente. Algo de esta forma básicamente debe ser el caso, supongo ...
Intente desplazarse hacia abajo hasta la parte inferior derecha de las herramientas de desarrollo allí (la que tiene el modelo de cuadro gráfico). En la parte inferior, le dice qué fuente se representa realmente; aquí hay un ejemplo de un sitio aleatorio. Eso debería proporcionarle la fuente real que se está representando, en lugar de la regla CSS, que puede implicar el uso de fuentes alternativas, en este caso, "serif".
excelente No sabía encontrar esa información antes. De hecho, recurre a otra fuente (Symbola). Pero me pregunto por qué, ya que el glifo está realmente presente en Lateef. ¿Quizás esto tiene algo que ver con cómo funciona Unicode y no permite el uso directo del glifo?
No lo creo, porque representa correctamente el glifo. Debe ser algo con Lateef. ¿Tienes InDesign? Si lo hace, intente configurar un estilo de párrafo que use Lateef como fuente, copie el glifo del navegador en un editor de texto sin formato (Bloc de notas o similar) y luego péguelo en InDesign con ese estilo de párrafo. Si también termina apareciendo como un cuadrado o algo similar, sabrá con seguridad que es algo con Lateef.
No tengo InDesign, así que no pude probar esto. Sin embargo, hice un descubrimiento interesante, jugando con FontForge: en el menú "Ver" > "Etiquetar glifo por...", elegí "Unicode" en lugar de "Imagen de glifo", y de repente noté que, en algunos sentido técnico del que no sé más, el gylph, aunque 'ubicado' en 0x1016f, no fue 'asignado' al punto Unicode U + 1016f. Entonces, lo asigné yo mismo (estableciendo "Información de glifo"> "Unicode"> "Valor Unicode" en "U + 1016f"), y ahora funciona el acceso. Así que sí, tienes razón, es algo de Lateef, al (no) asignar estos valores Unicode...
Me alegra ver que encontró el error, y suena como un error. Deberías publicar eso como respuesta a la pregunta; luego puede aceptarla para mostrar que la pregunta ha sido respondida y sacarla de la lista de 'preguntas sin responder'. También sugeriría ponerse en contacto con SIL e informarles sobre esta rareza. No suena como algo que es realmente intencional.
En realidad, en una inspección más cercana, tal vez no sea un error del todo. El punto de código U+FE91 se encuentra en el bloque Arab Presentational Forms B , que, de acuerdo con el estándar Unicode (págs. 255–256), se supone que no deben usarse por sí solos: “Estos glifos generalmente no son accesibles como caracteres y son utilizado solo por motores de renderizado”. Entonces, quizás sea intencional que el glifo no esté asignado a un punto Unicode. Sin embargo, todavía parece una tontería incluir el glifo pero no mapearlo.
Me parece una tontería, la verdad. El lector del que estoy aprendiendo MSA en este curso que estoy siguiendo, incluye la forma inicial en el diccionario para indicar que es un prefijo, como mencioné en la pregunta. Tal uso, aunque quizás no sea ortodoxo, es semántico y, por lo tanto, debería ser posible. De hecho, ese razonamiento se aplicaría a cualquier glifo, y Unicode presenta estos archivos PDF con todos los glifos posibles, ¿verdad? Oh bien. Encontré una solución original, por cierto, como puedes leer en la respuesta;) ¡Y gracias por la ayuda!

Respuestas (1)

La razón por la que el glifo no era accesible

Aparentemente, aunque el glifo de la forma inicial de BEH se 'almacenó' en la ubicación 0x1016f, no se le 'asignó' el valor Unicode U+1016f. Por lo que yo entiendo, el glifo no aparecerá en la cmaptabla, que es el lugar de destino para el proceso de selección de caracteres -> glifos del motor de representación.

Descubrí esto cuando estaba jugando en Fontforge. En FontForge, para ver los caracteres etiquetados por el valor Unicode en lugar de la imagen del glifo, seleccione "Ver" > "Etiquetar glifo por" > "Unicode"; y para configurar el valor Unicode para el glifo en cuestión, seleccione el glifo, haga clic con el botón derecho y luego configure "Información de glifo..." > "Unicode" > "Valor Unicode" de manera adecuada.

Me imagino que esto es un error en nombre de la fuente Lateef; la forma 'correcta' de hacerlo habría sido hacer que el glifo fuera accesible en la cmaptabla, pero también ponerlo en 0xfe91 en primer lugar, en lugar de 0x1016f (donde no pertenece semánticamente).

Cómo acceder al glifo de todos modos

FÁCIL: solo use U+0640 : بـ.

VIEJO / COMPLICADO:

Además de modificar la fuente, como se sugiere en la solución del problema anterior, se me ocurrió otra forma original de acceder al glifo, sin modificar la fuente.

<div style="direction: rtl;">ب&zwj;<span style="color:#fff; width: 0px; display: inline-block;">ن</span></div>

Como se puede acceder implícitamente al glifo , cuando se combina con letras posteriores, uno puede simplemente ocultar esas letras posteriores y terminar solo con el glifo de forma inicial BEH. Sin embargo, se debe emplear un truco adicional: agregar un ensamblador de ancho cero &zwj;para permitir que los caracteres se conecten a través del <span>elemento intercalado.