792 Stimmen

Kann ich eine benutzerdefinierte Schriftart in ein iPhone-Programm einbetten?

Ich möchte, dass eine Anwendung eine benutzerdefinierte Schriftart für das Rendern von Text, laden Sie es, und verwenden Sie es dann mit Standard UIKit Elemente wie UILabel . Ist dies möglich?

5 Stimmen

In einer der CS193p-Vorlesungen (iPhone Application Development) in Stanford stellte Evan fest, dass die Installation einer eigenen Schriftart auf einem Gerät "eine Menge Arbeit" ist, was zumindest bedeutet, dass es möglich ist :-)

2 Stimmen

IPhone 3.2 erlaubt benutzerdefinierte Schriftarten, aber nur für das iPad (siehe Antwort unten)

6 Stimmen

Am Ende habe ich Bilder verwendet.

0voto

Raptor Punkte 50921

Als Ergänzung zu @bdev's Antwort Hier ist eine aktualisierte Version, die nur benutzerdefinierte Schriftarten auflistet.

Schritt 1: Finden Sie alle Systemschriften mit @bdevs Antwort heraus und speichern Sie sie in einer Datei.

Fügen Sie den folgenden Code in den ersten View Controller's -(void)viewDidLoad nach [super viewDidLoad] (oder in der App Delegate):

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask, YES);
NSMutableArray *system_fonts = [NSMutableArray array];
for (NSString *familyName in [UIFont familyNames]) {
    for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
        [system_fonts addObject:fontName];
    }
}
if([paths count] > 0) {
    [system_fonts writeToFile:[[paths objectAtIndex:0]
                               stringByAppendingPathComponent:@"array.out"] atomically:YES];
}

Führen Sie die App einmal aus. Beenden Sie sie danach.

Schritt 2: Benutzerdefinierte Schriftart zum Projekt hinzufügen

Fügen Sie mit der in der akzeptierten Antwort beschriebenen Methode Ihre benutzerdefinierten Schriftarten hinzu (denken Sie daran, die .plist und fügen Sie die Schriftartendateien zum Build hinzu, indem Sie Add To Target .

Schritt 3: Vergleichen Sie die Systemschriftarten mit der aktuellen Schriftartenliste

Ersetzen Sie die Codes in Schritt 1 durch:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask, YES);
NSMutableArray *system_fonts = [NSMutableArray arrayWithContentsOfFile:[[paths objectAtIndex:0]
                                                                        stringByAppendingPathComponent:@"array.out"]];

for (NSString *familyName in [UIFont familyNames]) {
    for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
        if (![system_fonts containsObject:fontName]) {
            NSLog(@"%@", fontName);
        }
    }
}

Führen Sie die App aus, und die Liste der von Ihnen hinzugefügten benutzerdefinierten Schriftarten wird angezeigt.

Dies gilt für iOS 3.2 bis iOS 6 (zukünftige Versionen funktionieren wahrscheinlich problemlos). Funktioniert mit .ttc y .ttf auch.

0voto

DrMickeyLauer Punkte 4067

Wie alle vorherigen Antworten gezeigt haben, ist es sehr wohl möglich, und in neueren iOS-Versionen ziemlich einfach.

Ich weiß, dass dies keine technische Antwort ist, aber da viele Leute es falsch machen (und damit effektiv gegen Lizenzen verstoßen, was Sie viel Geld kosten kann, wenn Sie verklagt werden), lassen Sie mich hier eine Einschränkung machen: Das Einbetten einer benutzerdefinierten Schriftart in eine iOS-App (oder jede andere Art) ist grundsätzlich Umverteilung von die Schriftart. Die meisten Lizenzen für kommerzielle Schriftarten enthalten verbieten Weiterverbreitung, also stellen Sie bitte sicher, dass Sie im Einklang mit der Lizenz handeln.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X