2014-02-06 6 views
8

Für iOS 7 hat Apple eine spezielle modifizierte Version von Helvetica Thin/Licht, das Periode und Doppelpunkte gerundet hat:Kann die modifizierte Helvetica von iOS 7 in Apps verwendet werden?

enter image description here

dies vergleichen mit Helvetica-Neuen Thin oder Helvetica-Neues Licht in Xcode:

enter image description here

Ist es möglich, Anwendungen mit der speziellen modifizierte Version mit den abgerundeten Doppelpunkten und Perioden zu entwickeln?

EDIT: Es stellt sich heraus, dass diese runden Doppelpunkte und Punkte nicht von Apple individuell gestaltet sind, sie sind "Charakter wechselt" und Sie können sie in Ihrem Lieblingsschriftart-Viewer sehen.

+0

Können Sie nach unten, sie laden und als benutzerdefinierte Schriftarten verwenden? –

+0

Möglicherweise von wo? – inorganik

Antwort

11

Hier ist, wie es geht. Sogar das Lesen der Dokumentation ist sehr unklar.

Zuerst müssen Sie die Eigenschaften einer Schriftart erhalten, die Ihnen die Konstanten gibt, die Sie in Ihrem UIFontDescriptorFeatureSettingsAttribute verwenden können. Ich habe meinen von this post.

Dies gibt Ihnen Feature-Typ-ID-Schlüssel und Ihre Optionen für ihre Werte, die Feature-Selektor-ID-Schlüssel.

NSArray *timerDisplaySettings = @[ 
             @{ UIFontFeatureTypeIdentifierKey: @(6), 
             UIFontFeatureSelectorIdentifierKey: @(1) 
            }, 
             @{ UIFontFeatureTypeIdentifierKey: @(17), 
             UIFontFeatureSelectorIdentifierKey: @(1) 
             }]; 

dann erstellen Sie eine Schriftart Descriptor auf einen Deskriptor durch Zugabe - diese Weise können Sie den Namen der Schriftart und Familie über UIFont angeben:

UIFont *font = [UIFont fontWithName:@"HelveticaNeue-UltraLight" size:32]; 

UIFontDescriptor *originalDescriptor = [font fontDescriptor]; 
UIFontDescriptor *timerDescriptor =[originalDescriptor fontDescriptorByAddingAttributes: @{ UIFontDescriptorFeatureSettingsAttribute: timerDisplaySettings }]; 

Dann schließen Sie die Schleife und erstellen Sie die Schrift mit Ihrem Beschreibung. (Die Größe „0,0“ einfach bedeutet, dass wir die Skalierung es nicht von seiner ursprünglichen Größe von 32.

UIFont *timerFont = [UIFont fontWithDescriptor: timerDescriptor size:0.0]; 
0

Ja, diese Funktionen stehen Ihnen über das neue Dynamic Type-System von iOS 7 zur Verfügung. http://tirania.org/monomac/archive/2013/Sep-25.html

+1

Der Teil dieses Links, der zeigt, wie das Rendern einer Schriftart angepasst wird, bezieht sich auf ein Repo auf Github, das von einem kostenpflichtigen Framework (MonoTouch) abhängig ist und keinen objektiven C-Code enthält. Könnten Sie bitte den tatsächlichen Ziel-C-Code in Ihrer Antwort angeben? – inorganik

4

Aus Gründen der zukünftigen Leser, um zu sehen, die Schrift Array verfügt, in Objective-C ist es:

@import CoreText; 

und

- (void)fontFeatures:(UIFont *)font { 
    NSArray *features = CFBridgingRelease(CTFontCopyFeatures((__bridge CTFontRef)font)); 

    if (features) { 
     NSLog(@"%@: %@", font.fontName, features); 
    } 
} 

Für HelveticaNeue-UltraLight, dass die Renditen:

HelveticaNeue-UltraLight: (
     { 
     CTFeatureTypeIdentifier = 1; 
     CTFeatureTypeName = Ligatures; 
     CTFeatureTypeNameID = 258; 
     CTFeatureTypeSelectors =   (
         { 
       CTFeatureSelectorDefault = 1; 
       CTFeatureSelectorIdentifier = 2; 
       CTFeatureSelectorName = "Common Ligatures"; 
       CTFeatureSelectorNameID = 259; 
      } 
     ); 
    }, 
     { 
     CTFeatureTypeExclusive = 1; 
     CTFeatureTypeIdentifier = 6; 
     CTFeatureTypeName = "Number Spacing"; 
     CTFeatureTypeNameID = 262; 
     CTFeatureTypeSelectors =   (
         { 
       CTFeatureSelectorDefault = 1; 
       CTFeatureSelectorIdentifier = 0; 
       CTFeatureSelectorName = "No Change"; 
       CTFeatureSelectorNameID = 264; 
      }, 
         { 
       CTFeatureSelectorIdentifier = 1; 
       CTFeatureSelectorName = "Proportional Numbers"; 
       CTFeatureSelectorNameID = 263; 
      } 
     ); 
    }, 
     { 
     CTFeatureTypeExclusive = 1; 
     CTFeatureTypeIdentifier = 17; 
     CTFeatureTypeName = "Character Alternatives"; 
     CTFeatureTypeNameID = 265; 
     CTFeatureTypeSelectors =   (
         { 
       CTFeatureSelectorDefault = 1; 
       CTFeatureSelectorIdentifier = 0; 
       CTFeatureSelectorName = "No Change"; 
       CTFeatureSelectorNameID = 264; 
      }, 
         { 
       CTFeatureSelectorIdentifier = 1; 
       CTFeatureSelectorName = "Time Punctuation"; 
       CTFeatureSelectorNameID = 266; 
      }, 
         { 
       CTFeatureSelectorIdentifier = 2; 
       CTFeatureSelectorName = "Compass Punctuation"; 
       CTFeatureSelectorNameID = 267; 
      }, 
         { 
       CTFeatureSelectorIdentifier = 3; 
       CTFeatureSelectorName = "Weather Punctuation"; 
       CTFeatureSelectorNameID = 268; 
      }, 
         { 
       CTFeatureSelectorIdentifier = 4; 
       CTFeatureSelectorName = "Round Lowercase Punctuation"; 
       CTFeatureSelectorNameID = 269; 
      } 
     ); 
    } 
) 

So, in iOS 8, für HelveticaNeue-UltraLight, Schlüssel 17 ist "Zeichenalternativen", und Wert 1 ist "Zeit Interpunktion".


Um diese Funktionen in Swift zu sehen, es ist:

import CoreText 

und

func fontFeatures(font: UIFont) { 
    if let features = CTFontCopyFeatures(font) as NSArray! { 
     println("\(font.fontName): \(features)") 
    } 
} 
Verwandte Themen