So greifen Sie auf das arabische BEH-Anfangsformular von einer Schriftart zu, die die Glyphe in einem unkonventionellen Unicode-Slot platziert

(Ich bin neu in Arabisch und mache Dinge im Zusammenhang mit Unicode, daher übersehe ich möglicherweise einige eklatante Details.)

Ich verwende also die SIL-Schriftart Lateef und möchte in HTML auf die Glyphe des BEH-Anfangsformulars zugreifen. (Da „with/through“ in MSA in das Präfix übersetzt wird ﺑِ, möchte ich es in die ursprüngliche Form einfügen, um deutlich zu machen, dass es sich um ein Präfix und nicht um ein Wort für sich selbst handelt.)

Die BEH-Anfangsform-Glyphe hat den Unicode-Code U+FE91 . Lateef fügt die Glyphe jedoch nicht an dieser "Position" ein (nicht ganz sicher, wie man sie nennt), und fügt stattdessen die Glyphe bei U + 1016F ("Greek Acrophonic Carystian Five Hundred") ein und verwendet dann eine zu verwendende Substitutionstabelle Es. (Die Verwendung der Substitutionstabelle ist logisch, aber ich verstehe nicht, warum Lateef die Glyphe an dieser seltsamen Stelle platziert.)

Da meine App definitiv Lateef verwendet, das als Webfont enthalten ist, habe ich mich entschieden, es dann einfach als U+1016F in Javascript ( \u{1016F}) oder HTML ( 𐅯oder 𐅯) zu referenzieren --- hässlich, ich weiß, weil nicht semantisch, aber ich konnte nicht entscheide dich für einen besseren Weg. Obwohl das fragliche Element tatsächlich Lateef als Schriftart verwendete, zeigte Chrome stattdessen die "griechischen akrophonischen Carystian Five Hundred" an:

Dies ist nicht die Glyphe der BEH-Anfangsform!

Meine Fragen sind dann:

  • Wie kommt es, dass Chrome die Glyphe „Greek Acrophonic Carystian Five Hundred“ anzeigt, wenn das HTML-Element eindeutig Lateef verwendet und das Unicode-Zeichen korrekt referenziert ist und Lateef tatsächlich die BEH-Anfangsform-Glyphe bei U + 1016F enthält?
  • Ist es überhaupt möglich, Lateefs initiales BEH anzuzeigen? (Außer der Bearbeitung der Schriftart, um die Glyphe auch an der richtigen Stelle einzufügen.)
  • Ist dies ein Fehler/Missverständnis meinerseits oder eine tatsächliche Verrücktheit im Namen von Chrome, Ubuntu/Chrome, Unicode oder HTML?
Können Sie das Element in Chrome überprüfen, um zu überprüfen, ob es tatsächlich Lateef oder eine Fallback-Schriftart verwendet, um diese bestimmte Glyphe zu rendern? Vielleicht gibt es etwas in der Substitutionstabelle, das Chrome glauben lässt, dass Lateef den Codepunkt U + 1016F nicht wirklich enthält. Und ja, sehr merkwürdiger Ort, um es auszudrücken – ganz anders als SIL, hätte ich gedacht.
Überprüfen des Elements in Chrome, um zu überprüfen, ob Lateef angegeben ist: i.imgur.com/yN26bvG.png . Aber ich weiß wirklich nicht, wie Browser mit Schriftarten arbeiten, vielleicht ist es tatsächlich so, dass Chrome aus irgendeinem Grund einfach nicht weiß / denkt, dass Lateef dort ein Zeichen hat und daher eine andere Schriftart verwendet? Irgendetwas in dieser Form muss grundsätzlich der Fall sein, denke ich..
Versuchen Sie, bis zum Ende des unteren rechten Teils der dortigen Entwicklertools zu scrollen (dasjenige mit dem Grafikboxmodell darin). Ganz unten erfahren Sie, welche Schriftart tatsächlich gerendert wird. Hier ist ein Beispiel von einer zufälligen Website. Das sollte Ihnen die tatsächliche Schriftart geben, die gerendert wird, und nicht die CSS-Regel, die dazu führen kann, dass Fallback-Schriftarten verwendet werden, in diesem Fall „Serife“.
Ach, ausgezeichnet. Ich wusste nicht, diese Informationen zu finden, bevor. Sie greift tatsächlich auf eine andere Schriftart (Symbola) zurück. Aber ich frage mich warum, da die Glyphe tatsächlich in Lateef vorhanden ist. Vielleicht hat das etwas damit zu tun, wie Unicode funktioniert, und es verbietet die direkte Verwendung der Glyphe?
Ich glaube nicht, weil es die Glyphe korrekt wiedergibt. Es muss etwas mit Lateef sein. Hast du zufällig InDesign? Versuchen Sie in diesem Fall, einen Absatzstil einzurichten, der Lateef als Schriftart verwendet, kopieren Sie die Glyphe aus dem Browser in einen formatlosen Texteditor (Notepad oder ähnliches) und fügen Sie sie dann mit diesem Absatzstil in InDesign ein. Wenn es am Ende auch als Quadrat oder ähnliches erscheint, dann wissen Sie sicher, dass es etwas mit Lateef ist.
Ich habe kein InDesign, also konnte ich das nicht testen. Allerdings habe ich eine interessante Entdeckung gemacht, als ich mit FontForge herumgespielt habe: Im Menü "Ansicht" > "Glyphe beschriften mit ..." habe ich "Unicode" anstelle von "Glyphenbild" ausgewählt, und plötzlich ist mir das bei einigen aufgefallen technischen Sinn, von dem ich nicht mehr weiß, wurde der Gylph, obwohl sie sich bei 0x1016f "befindet", nicht dem Unicode-Punkt U + 1016f "zugewiesen". Also habe ich es selbst zugewiesen (Einstellung "Glyphen-Info" > "Unicode" > "Unicode-Wert" auf "U+1016f"), und jetzt funktioniert der Zugriff. Also ja, Sie haben Recht, es ist eine Lateef-Sache, diese Unicode-Werte (nicht) zuzuweisen ...
Schön zu sehen, dass Sie den Fehler gefunden haben – und es klingt wie ein Fehler. Sie sollten das als Antwort auf die Frage posten; Sie können sie dann akzeptieren, um zu zeigen, dass die Frage beantwortet wurde, und sie von der Liste der unbeantworteten Fragen streichen. Ich würde auch vorschlagen, SIL zu kontaktieren und sie über diese Kuriosität zu informieren. Es klingt nicht wie etwas, das wirklich beabsichtigt ist.
Eigentlich ist es bei näherer Betrachtung vielleicht gar kein Bug. Der Codepunkt U+FE91 steht im Block Arabic Presentational Forms B , die nach dem Unicode-Standard (S. 255–256) nicht alleine verwendet werden sollen: „Diese Glyphen sind im Allgemeinen nicht als Zeichen zugänglich und sind nur von Rendering-Engines verwendet“. Vielleicht ist es also Absicht, dass die Glyphe keinem Unicode-Punkt zugeordnet wird. Es scheint immer noch albern, die Glyphe einzuschließen, sie aber nicht zuzuordnen.
Kommt mir in der Tat albern vor. Der Leser, von dem ich in diesem Kurs, dem ich folge, MSA lerne, enthält die Anfangsform im Wörterbuch, um anzuzeigen, dass es sich um ein Präfix handelt, wie ich in der Frage erwähnt habe. Eine solche Verwendung, obwohl vielleicht nicht orthodox, ist nichtsdestotrotz semantisch und sollte daher möglich sein. Tatsächlich würde diese Argumentation für jede Glyphe gelten, und Unicode präsentiert diese PDFs tatsächlich mit allen möglichen Glyphen, richtig? Nun ja. Ich habe eine irre Lösung gefunden, übrigens, wie Sie in der Antwort lesen können;) Und danke für die Hilfe!

Antworten (1)

Der Grund, warum die Glyphe nicht zugänglich war

Obwohl die Glyphe der BEH-Anfangsform an Position 0x1016f „gespeichert“ wurde, wurde ihr offensichtlich nicht der Unicode-Wert U+1016f „zugewiesen“. Soweit ich weiß, wird die Glyphe dann nicht in der cmapTabelle angezeigt, die der Ausgangspunkt für den Auswahlprozess für Zeichen -> Glyphe der Rendering-Engine ist.

Ich habe das entdeckt, als ich in Fontforge herumgespielt habe. Um in FontForge die Zeichen mit dem Unicode-Wert anstelle des Glyphenbilds anzuzeigen, wählen Sie „Ansicht“ > „Glyphe beschriften nach“ > „Unicode“; und um den Unicode-Wert für die betreffende Glyphe festzulegen, wählen Sie die Glyphe aus, klicken Sie mit der rechten Maustaste, und stellen Sie dann „Glyph Info...“ > „Unicode“ > „Unicode Value“ entsprechend ein.

Ich stelle mir vor, dass dies ein Fehler im Namen der Schriftart Lateef ist; Der 'richtige' Weg wäre gewesen, die Glyphe in der cmapTabelle zugänglich zu machen, sie aber auch an erster Stelle bei 0xfe91 zu platzieren, anstatt bei 0x1016f (wo sie semantisch nicht hingehört).

Wie man trotzdem auf die Glyphe zugreift

EINFACH: Verwenden Sie einfach U+0640 : بـ.

ALT / KOMPLIZIERT:

Abgesehen von der Änderung der Schriftart, wie in der obigen Lösung des Problems vorgeschlagen, habe ich mir eine andere, unkonventionelle Möglichkeit ausgedacht, auf die Glyphe zuzugreifen, ohne die Schriftart zu ändern.

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

Da auf die Glyphe implizit zugegriffen werden kann , wenn sie mit nachfolgenden Buchstaben kombiniert wird, kann man diese nachfolgenden Buchstaben einfach ausblenden und am Ende nur die BEH-Anfangsform-Glyphe erhalten. Es muss jedoch ein zusätzlicher Trick angewendet werden: Hinzufügen eines Joiners mit einer Breite von null &zwj;, um die Zeichen durch das eingestreute <span>Element verbinden zu lassen.