Wie ich es verstehe, enthält eine Zeichenfolge Glyphen und eine Glyphe könnte aus einzelnen Zeichen bestehen. Für mich ist das ein Problem, da ich gerne die Farbe einiger Diakritika in einer Zeichenkette ändern möchte.Ändern der Farbe einzelner Zeichen in einem Glyphe
Lassen Sie uns sagen, dass wir die folgende Zeichenfolge haben:
วาีม
Für diese Zeichenfolge Ich mag würde die Konsonanten eine andere Farbe zu machen, wie es diakritischen ist. Ie .: Ich möchte eine andere Farbe für วาม
und ี
.
Aus meinen Tests scheint es, dass ich nur einzelne Glyphen färben kann. Es scheint, dass ich die Farbe nicht auf Charakterniveau (diakritisch) ändern kann. Einige Beispiel-Code:
let text = NSMutableAttributedString(string: "วาีม")
text.addAttribute(NSForegroundColorAttributeName, value: UIColor.blue, range: NSMakeRange(0, 1))
text.addAttribute(NSForegroundColorAttributeName, value: UIColor.red, range: NSMakeRange(1, 1))
text.addAttribute(NSForegroundColorAttributeName, value: UIColor.green, range: NSMakeRange(2, 1))
text.addAttribute(NSForegroundColorAttributeName, value: UIColor.orange, range: NSMakeRange(3, 1))
label.attributedText = text
Das obige Beispiel würde wie folgt:
Wie die diakritischen sehen ist, ist nicht mit einer grünen Farbe wiedergegeben.
Weiß jemand, ob es eine Möglichkeit gibt, das gewünschte Ergebnis zu erzielen?
Eigentlich werden sie aus mehreren Gründen nicht richtig aufgehoben. Erstens ist die Glyphe mit dem Diakritischen ein ganz anderer Eintrag in der Schriftart als der ohne. Es gibt keinen Grund zu glauben, dass die Formen des "Basis" -Charakters gleich sind und oft nicht (z. B. um große Diakritika zu verwenden). Zweitens, selbst wenn sie die gleiche Form haben, sind sie Anti-Aliase. Das bedeutet, dass die Kanten teilweise transparente Pixel haben. Wenn sie übereinander gezogen werden, mischen sich die Farben und Sie werden seltsame Fransen bekommen. –
Das Font-Problem ist apropos, aber ich bin mir nicht sicher, ob das Anti-Aliasing-Problem relevant ist; es würde davon abhängen, wann es in der Pipeline passiert. –
Während ich mit dem vorgeschlagenen Ansatz ein angemessenes Ergebnis erzielen konnte, ist Antialiasing tatsächlich ein Problem. Als solches ist es nicht 100% das Endergebnis, das ich gerne erreichen würde. –