Kerning no iOS UITextView

Para o que aparentemente é um 'bug', o UITextView parece não suportar o kerning como outros elementos do UIKit. Existe uma solução para obter o kerning funcionando?

Para ser claro, estou falando sobre o espaçamento entre pares de caracteres que são definidos no arquivo de fonte, não o espaçamento geral entre todos os caracteres. Usando umNSAttributedString com oNSKernAttributeName ajustará o espaçamento entre todos os caracteres, mas os pares de caracteres internos ainda não funcionam.

Por exemplo:

Existe uma solução para corrigir isso?

Uma solução simples que descobri é adicionar estilos css ao UITextView, que habilitam o kerning. Se eu usar o método não documentadosetContentToHTMLString: Eu posso injetar o css na visualização da Web secreta dentro da exibição de texto.

NSString *css = @"*{text-rendering: optimizeLegibility;}";
NSString *html = [NSString stringWithFormat:@"<html><head><style>%@</style></head><body>Your HTML Text</body></html>", css];
[textView performSelector:@selector(setContentToHTMLString:) withObject:html];

Isso corrige o problema imediatamente; no entanto, parece muito provável que esse aplicativo seja rejeitado. Existe uma maneira segura de inserir alguns css na exibição de texto?

Outras soluções alternativas que experimentei incluem:

Usando uma visualização da Web e a propriedade contenteditable. Isso não é ideal porque o webview faz um monte de coisas extras que ficam no caminho, por exemplo, a visualização de acessório de entrada que não pode ser facilmente ocultada.

Subclassificando umUITextView e renderizar texto manualmente com o texto principal. Isso é mais complexo do que eu esperava, porque todas as coisas selecionadas precisam ser reconfiguradas também. Por causa deUITextViewsubclasses privadas deUITextPosition eUITextRange isso é uma enorme dor no rabo, se não completamente impossível.

questionAnswers(6)

yourAnswerToTheQuestion