2016-07-11 40 views
1

Ich verwende CTFontDrawGlyphs (API) Glyphen aus der AppleColorEmoji Schrift zu machen. Ich habe die folgenden Informationen verwendet, um die CGContext zu erstellen: RGB, 32 bpp, 8 bpc, kCGImageAlphaPremultipliedFirstOSX API CTFontDrawGlyphs() kehrt nicht korrekt Alpha-Werte für AppleColorEmoji Glyphen

Die tatsächlichen png-Dateien im ‚sbix‘ Tabelle der AppleColorEmoji Schrift enthalten geeignete Alpha-Werte. Der Hintergrund der Emojis ist transparent, während der Vordergrund undurchsichtig ist. Aber gemacht wird, wenn die CTFontDrawGlyphs über API des Alphakanal des gerenderten Glyphe alle in einer vollständig lichtundurchlässigen Quadrat Wiedergabe resultierenden 0xFF Werte enthält. Als Ergebnis Alpha-Werte von fehlt, bin ich in der Lage, es nicht richtig mit einem farbigen Hintergrund zu vermischen.

Ist das eine bekannte Einschränkung der API? Mache ich etwas falsch, während ich den Kontext erzeuge, der zu diesem unerwarteten Verhalten führt? Bitte helfen Sie.

+0

Haben Sie die Antwort darauf? Ich habe dieselbe Frage. – Nitesh

+0

Ja. Ich hatte einen Fall mit Apple angesprochen. Bitte sehen Sie die Antwort. – sks

+0

Ich werde das gleiche versuchen. Vielen Dank. – Nitesh

Antwort

1

Anscheinend CTFontDrawGlyphs() schreibt nicht halbtransparente Alpha-Werte im Kontextpuffer, wenn Sie die Bytes des Kontextpuffers mit 0xFF Werte gefüllt haben.

Wie von der Apple-Entwicklerunterstützung vorgeschlagen, habe ich das Memoset des Puffers, den ich an den Kontext übergebe, mit 0x00 Werten. Danach begann CTFontDrawGlyphs() die Alpha-Werte richtig auch für semi-transparente Pixel zu schreiben.