2012-04-15 13 views
0

Ich Darstellung diese Zeichenfolge (die Pausen bemerken):Core fügen zusätzlichen Platz zum las Zeile jeden Absatzes

CONSEJO 
NACIONAL 
PARA LA 
CULTURA 
Y LAS ARTES 

ich die NSAttributedString konfiguriert habe eine Zeilenhöhe konstant auf 26 Punkte haben, mit dem Code vorgeschlagen von Apfel here:

CGFloat lineSpacing = 26; 
CTTextAlignment theAlignment = kCTLeftTextAlignment; 

CTParagraphStyleSetting theSettings[3] = 
{ 
    {kCTParagraphStyleSpecifierMaximumLineHeight, sizeof(CGFloat), &lineSpacing}, 
    {kCTParagraphStyleSpecifierMinimumLineHeight, sizeof(CGFloat), &lineSpacing}, 
    {kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignment), &theAlignment }, 
}; 

Aber es gibt mehr Platz in der letzten Zeile:

Wenn ich manuell Leerzeichen zwischen den Wörtern füge ich das erwartete Ergebnis zu erhalten, so beim Drucken:

CONSEJO   NACIONAL     PARA LA                CULTURA               Y LAS ARTES 

Es zeigt dies (Beachten Sie dort in der letzten Zeile kein zusätzlicher Abstand ist):

Dies ist keine nachhaltige Lösung, da ich nicht alle Zeichenketten manuell ändern muss, um Leerzeichen basierend auf der Rahmengröße hinzuzufügen.

Ich habe seit Monaten getestet und ich konnte das nicht lösen, die letzte Zeile bekommt immer mehr Platz.

Ich habe auch mit "\ r" zu sehen, ob dies bekam unterschiedliche Ergebnisse experimentiert, aber es fügt noch mehr Platz, Anzeigen:

Consejo\rNacional\rpara la\rCultura\ry las Artes 

Produziert:

[Links mit \ r] [ rechts mit Leerzeichen]

http://dl.dropbox.com/u/11470523/Test.png

[Hier werden alle blauen Blöcke die gleiche Größe]

http://dl.dropbox.com/u/11470523/TEsst1%20copy.png

So gibt es weniger Platz, aber es gibt noch mehr, als es sein sollte.

CoreText sollte in der Lage sein, eine einfache Zeichenfolge wie diese zu behandeln.

Das Hinzufügen von Leerzeichen ist nicht gut genug (aus verschiedenen Gründen), es muss einen Weg geben, dies unter Kontrolle zu bekommen.

Was ist das Problem Ihrer Meinung nach?

Antwort

0

Ich kann die Bilder nicht sehen, aber ich denke, Sie sind in das gleiche Problem geraten, das ich vor nicht allzu langer Zeit kennengelernt habe, siehe this.

Sie können CTTypesetter und CTTypesetterSuggestClusterBreak verwenden, um Zeilenumbrüche manuell zu behandeln. Ich verwende Schriftgröße als Höhe einer Linie, ich füge Linienabstand hinzu, wenn Linien manuell gezeichnet werden, und es funktioniert gut.

Verwandte Themen