iPhone 응용 프로그램에 사용자 정의 글꼴을 포함 할 수 있습니까?
텍스트 렌더링을위한 사용자 지정 글꼴을 앱에 포함하고로드 한 다음 UIKit
.NET과 같은 표준 요소와 함께 사용하고 싶습니다 UILabel
. 이것이 가능한가?
iOS 3.2 이상에서는이를 지원합니다. 스트레이트에서 아이폰 OS 3.2의 새로운 기능 문서 :
사용자 지정 글꼴 지원 사용자 지정 글꼴
을 사용하려는 응용 프로그램은 이제 해당 응용 프로그램 번들에 해당 글꼴을 포함하고 Info.plist 파일에 UIAppFonts 키를 포함하여 해당 글꼴을 시스템에 등록 할 수 있습니다. 이 키의 값은 응용 프로그램 번들의 글꼴 파일을 식별하는 문자열 배열입니다. 시스템이 키를 확인하면 지정된 글꼴을로드하여 응용 프로그램에서 사용할 수 있습니다.
에서 글꼴이 설정되면 Info.plist
사용자 정의 글꼴을 IB의 다른 글꼴로 사용하거나 프로그래밍 방식으로 사용할 수 있습니다.
Apple Developer Forums에는 진행중인 스레드가 있습니다 :
https://devforums.apple.com/thread/37824 (로그인 필요)
그리고 이것을 달성하는 방법에 대한 훌륭하고 간단한 3 단계 자습서가 있습니다 (깨진 링크 제거됨)
- Xcode를 리소스로 사용하여 프로젝트에 사용자 지정 글꼴 파일 추가
Info.plist
라는 파일에 키를 추가합니다UIAppFonts
.- 이 키를 배열로 만들기
- 가지고있는 각 글꼴에 대해 글꼴 파일의 전체 이름 (확장자 포함)을
UIAppFonts
배열 항목으로 입력합니다. - 저장
Info.plist
- 이제 애플리케이션에서 간단히 호출
[UIFont fontWithName:@"CustomFontName" size:12]
하여 UILabels 및 UITextViews 등과 함께 사용할 사용자 정의 글꼴을 가져올 수 있습니다 .
또한 : 글꼴이 번들 리소스 복사에 있는지 확인하십시오.
편집 : iOS 3.2부터이 기능이 내장되어 있습니다. 3.2 이전 버전을 지원해야하는 경우에도이 솔루션을 사용할 수 있습니다.
UILabel
.ttf 파일로드 를 확장 하고 처리 하는 간단한 모듈을 만들었습니다 . Apache 라이선스로 오픈 소스를 공개하고 여기 github에 올렸습니다 .
중요한 파일은 FontLabel.h
및 FontLabel.m
.
Genericrich의 답변 코드 중 일부를 사용합니다 .
또는
글꼴 파일을 리소스에 복사
Info.plist
UIAppFonts라는 파일에 키를 추가합니다 . ( "응용 프로그램에서 제공하는 글꼴)이 키를 배열로 만들기
가지고있는 각 글꼴에 대해 UIAppFonts 배열에 항목으로 글꼴 파일의 전체 이름 (확장자 포함)을 입력하십시오.
저장
Info.plist
이제 응용 프로그램에서 호출
[UIFont fontWithName:@"CustomFontName" size:15]
하여UILabels
및UITextViews
등에서 사용할 사용자 정의 글꼴을 가져올 수 있습니다 .
iOS 4 에서 사용자 정의 글꼴을 사용하는 간단한 방법이 있습니다 .
- (예를 들어, 글꼴 파일을 추가
Chalkduster.ttf
로) 자원 엑스 코드에서 프로젝트의 폴더. info.plist
라는 새 키를 열고 추가합니다UIAppFonts
. 이 키의 유형은 배열이어야합니다.- 확장명 (
Chalkduster.ttf
)을 포함하여이 배열에 사용자 지정 글꼴 이름을 추가합니다 . - 이제
[UIFont fontWithName:@"Chalkduster" size:16]
애플리케이션에서 사용할 수 있습니다 .
불행히도 IB는 사용자 정의 글꼴로 레이블을 초기화하는 것을 허용하지 않습니다. 이 문제 를 해결하려면 이 질문 을 참조하십시오 . 내가 가장 좋아하는 솔루션은 사용자 정의 UILabel
하위 클래스 를 사용하는 것입니다 .
@implementation CustomFontLabel
- (id)initWithCoder:(NSCoder *)decoder
{
if (self = [super initWithCoder: decoder])
{
[self setFont: [UIFont fontWithName: @"Chalkduster" size: self.font.pointSize]];
}
return self;
}
@end
Info.plist에서 "Fonts provided by application"항목을 추가하고 글꼴 이름을 문자열로 포함합니다.
Fonts provided by application
Item 0 myfontname.ttf
Item 1 myfontname-bold.ttf
...
그런 다음 다음을 실행하여 글꼴이 포함되어 있는지 확인하십시오.
for (NSString *familyName in [UIFont familyNames]) {
for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
NSLog(@"%@", fontName);
}
}
ttf 파일 이름은 레이블의 글꼴을 설정할 때 사용하는 이름과 같지 않을 수 있습니다 (위 코드를 사용하여 "fontWithName"매개 변수를 가져올 수 있음).
[label setFont:[UIFont fontWithName:@"MyFontName-Regular" size:18]];
편집 :이 답변은 iOS3.2에서 사라졌습니다. UIAppFonts 사용
사용자 지정을 성공적으로로드 할 수 있었던 유일한 방법 UIFont
은 개인 GraphicsServices 프레임 워크를 사용하는 것입니다.
다음은 .ttf
애플리케이션의 기본 번들에있는 모든 글꼴을 로드합니다 .
BOOL GSFontAddFromFile(const char * path);
NSUInteger loadFonts()
{
NSUInteger newFontCount = 0;
for (NSString *fontFile in [[NSBundle mainBundle] pathsForResourcesOfType:@"ttf" inDirectory:nil])
newFontCount += GSFontAddFromFile([fontFile UTF8String]);
return newFontCount;
}
글꼴이로드되면 Apple에서 제공 한 글꼴처럼 사용할 수 있습니다.
NSLog(@"Available Font Families: %@", [UIFont familyNames]);
[label setFont:[UIFont fontWithName:@"Consolas" size:20.0f]];
GraphicsServices는 나중에 API가 사라지는 경우 런타임에로드 할 수도 있습니다.
#import <dlfcn.h>
NSUInteger loadFonts()
{
NSUInteger newFontCount = 0;
NSBundle *frameworkBundle = [NSBundle bundleWithIdentifier:@"com.apple.GraphicsServices"];
const char *frameworkPath = [[frameworkBundle executablePath] UTF8String];
if (frameworkPath) {
void *graphicsServices = dlopen(frameworkPath, RTLD_NOLOAD | RTLD_LAZY);
if (graphicsServices) {
BOOL (*GSFontAddFromFile)(const char *) = dlsym(graphicsServices, "GSFontAddFromFile");
if (GSFontAddFromFile)
for (NSString *fontFile in [[NSBundle mainBundle] pathsForResourcesOfType:@"ttf" inDirectory:nil])
newFontCount += GSFontAddFromFile([fontFile UTF8String]);
}
}
return newFontCount;
}
와 iOS 8
+과 Xcode 6
+ 당신은 쉽게 만들 수 있습니다. 단계는 다음과 같습니다.
1) 글꼴을 Xcode
Supporting Files 폴더에 끌어다 놓습니다 . 대상 에 추가 섹션 에서 앱을 표시하는 것을 잊지 마십시오 . 이 순간부터이 글꼴을 사용 IB
하고 글꼴 팔레트에서 선택할 수 있습니다.
2) 장치에서이 글꼴을 사용할 수 있도록하려면을 열고 키를 info.plist
추가하십시오 Fonts provided by application
. 항목 0 키가 포함되며 글꼴 이름을 값으로 추가해야합니다. 글꼴 이름은 글꼴 파일 이름과 다를 수 있습니다. 그러나 먼저이 작업 대부분의 경우 파일 이름을 추가하십시오.
그렇지 않다면 이 기사는 항상 나를 도왔다.
다음은 글꼴 이름을 찾는 데 도움이되는이 기사의 코드 스 니펫입니다.
func allFonts(){
for family in UIFont.familyNames(){
println(family)
for name in UIFont.fontNamesForFamilyName(family.description)
{
println(" \(name)")
}
}
}
편집하다
Target의 Build Phases , Copy Bundle Resources 에 글꼴 파일을 추가해야한다는 점을 말씀 드리고 싶습니다 . 그것 없이는 장치에서 글꼴을 볼 수 없습니다. 그리고 예상치 못한 동작으로 이어질 수 있습니다.
예를 들어, 내가가 발생 bug
하는 경우, UITextField
사용자 정의 글꼴을 가지고 있지만,이 글꼴은 아니었다 복사 번들 자원 . 그리고 viewcontroller
이것으로 segue를 사용하면 함수가 호출 textfield
되기까지 약 4 초의 지연 viewDidLoad
이 있습니다. 글꼴 문제를 해결하면이 지연이 사라졌습니다. 따라서 두 번 확인하는 것이 좋습니다. (rdar : // 20028250) Btw, 버그를 재현 할 수 없었지만 글꼴에 문제가 있다고 확신합니다.
나는 이것을 이렇게했다 :
글꼴로드 :
- (void)loadFont{
// Get the path to our custom font and create a data provider.
NSString *fontPath = [[NSBundle mainBundle] pathForResource:@"mycustomfont" ofType:@"ttf"];
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithFilename([fontPath UTF8String]);
// Create the font with the data provider, then release the data provider.
customFont = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
}
이제에서 drawRect:
다음과 같이하십시오.
-(void)drawRect:(CGRect)rect{
[super drawRect:rect];
// Get the context.
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);
// Set the customFont to be the font used to draw.
CGContextSetFont(context, customFont);
// Set how the context draws the font, what color, how big.
CGContextSetTextDrawingMode(context, kCGTextFillStroke);
CGContextSetFillColorWithColor(context, self.fontColor.CGColor);
UIColor * strokeColor = [UIColor blackColor];
CGContextSetStrokeColorWithColor(context, strokeColor.CGColor);
CGContextSetFontSize(context, 48.0f);
// Create an array of Glyph's the size of text that will be drawn.
CGGlyph textToPrint[[self.theText length]];
// Loop through the entire length of the text.
for (int i = 0; i < [self.theText length]; ++i) {
// Store each letter in a Glyph and subtract the MagicNumber to get appropriate value.
textToPrint[i] = [[self.theText uppercaseString] characterAtIndex:i] + 3 - 32;
}
CGAffineTransform textTransform = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0);
CGContextSetTextMatrix(context, textTransform);
CGContextShowGlyphsAtPoint(context, 20, 50, textToPrint, [self.theText length]);
}
기본적으로 글꼴에서 오프셋을 찾기 위해 텍스트를 반복하고 매직 넘버를 사용하여 약간의 무차별 대입을해야하지만 작동합니다.
또한 글꼴을 합법적으로 포함 할 수 있는지 확인해야합니다. 대부분은 그렇지 않으며 이런 종류의 일을 전문으로하는 변호사가 있으므로주의하십시오.
예, 사용자 정의 글꼴을 포함 할 수 있습니다. UIFont에 대한 설명서, 특히 fontWithName:size:
메서드를 참조하십시오 .
1) 리소스 폴더에 글꼴이 포함되어 있는지 확인하십시오.
2) 글꼴의 "이름"은 반드시 파일 이름이 아닙니다.
3) 해당 글꼴을 사용할 법적 권한이 있는지 확인하십시오. 이를 앱에 포함시킴으로써 배포하는 것이므로이를 수행 할 권리가 있어야합니다.
당신이 사용하는 경우 xcode 4.3
, 당신은 추가해야 font
받는 사람 Build Phase
아래 Copy Bundle Resources
에 따르면, https://stackoverflow.com/users/1292829/arne 스레드에서 사용자 정의 글꼴 엑스 코드 4.3 . 이것은 나를 위해 일했습니다. 사용자 정의 글꼴이 내 앱에서 작동하기 위해 취한 단계는 다음과 같습니다.
- 프로젝트에 글꼴을 추가하십시오. 나는
OTF
(또는TTF
) 파일을 내가 만든 새 그룹에 끌어다 놓고 xcode의copying the files over to the project folder
. UIAppFonts
배열 내의 항목으로 나열된 글꼴을 사용하여 배열을 만듭니다 . 그냥names
이 아닌 확장자 (예 : "GothamBold
", "GothamBold-Italic
").- 화면 왼쪽
project name
상단의 길을 클릭하십시오Project Navigator
. Build Phases
xcode의 기본 영역에 나타나는 탭을 클릭하십시오 .- "
Copy Bundle Resources
"섹션을 확장 하고를 클릭"+"
하여 글꼴을 추가하십시오. - 를 클릭하면 열리는 파일 탐색기에서 글꼴 파일을 선택합니다
"+"
. - 필요한 모든 글꼴에 대해이 작업을 수행하십시오
add to the project
.
이를 수행하는 방법은 단계별 지침입니다. 추가 라이브러리 나 특별한 코딩이 필요하지 않습니다.
http://shang-liang.com/blog/custom-fonts-in-ios4/
대부분의 경우 문제는 방법이 아닌 글꼴에 있습니다. 이를 수행하는 가장 좋은 방법은 verdana 또는 geogia와 같이 확실히 작동하는 글꼴을 사용하는 것입니다. 그런 다음 원하는 글꼴로 변경하십시오. 작동하지 않으면 글꼴 이름이 올바르지 않거나 글꼴 형식이 올바르지 않을 수 있습니다.
기존 iOS 앱에 새 글꼴을 추가하는 것은 매우 쉽습니다.
리소스 폴더에 font.ttf와 같은 글꼴을 추가하기 만하면됩니다.
응용 프로그램을 엽니 다 info.plist
. 새 행을 "응용 프로그램에서 제공 한 글꼴"로 추가하고 글꼴 이름을 font.ttf로 입력합니다.
그리고 글꼴을 설정할 때 setFont:"corresponding Font Name"
에서 글꼴 추가 여부를 확인할 수 있습니다 NSArray *check = [UIFont familyNames];
.
응용 프로그램에서 지원하는 모든 글꼴을 반환합니다.
여기에서 내가 가장 좋아하는 짧은 튜토리얼 중 하나를 따르는 것이 좋습니다. http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/ 이 정보의 출처입니다.
1 단계-Finder에서 프로젝트로 .ttf 또는 .otf를 드래그합니다.
참고-기본 응용 프로그램 대상에서 '대상에 추가'상자를 클릭하십시오.
클릭하여 대상에 추가하는 것을 잊은 경우 프로젝트 계층 구조에서 글꼴 파일을 클릭하고 오른쪽 패널에서 대상 멤버십 섹션 에서 기본 앱 대상을 클릭하십시오.
확인 글꼴 확실히 그들이 당신에 표시 앱 대상 메이크업의 일부 만들려면 복사 번들 리소스 에 빌드 페이즈
2 단계-Plist에 글꼴 파일 이름 추가
정보 섹션 의 사용자 정의 iOS 대상 속성 으로 이동하여 해당 섹션의 항목에 키를 추가 하십시오 (입력 할 때 옵션으로 표시되고 배열로 설정됩니다. 작은 화살표를 클릭하십시오. 배열 항목을 열고 추가 한 .ttf 또는 .otf 파일의 이름을 입력하여 앱에 사용 가능한 글꼴 파일임을 알립니다.Fonts provided by application
참고-이 단계 직후에 앱이 충돌하는 경우 여기에 추가 한 항목의 철자를 확인하십시오.
3 단계-글꼴 이름을 찾아서 전화를 걸 수 있습니다.
응용 프로그램에 표시되는 글꼴 이름은 해당 글꼴의 파일 이름을 기반으로 생각하는 것과 다릅니다.이를 코드에 넣고 응용 프로그램이 작성한 로그를 검토하여 코드에서 어떤 글꼴 이름을 호출할지 확인합니다.
빠른
for family: String in UIFont.familyNames(){
print("\(family)")
for names: String in UIFont.fontNamesForFamilyName(family){
print("== \(names)")
}
}
목표 C
for (NSString* family in [UIFont familyNames]){
NSLog(@"%@", family);
for (NSString* name in [UIFont fontNamesForFamilyName: family]){
NSLog(@" %@", name);
}
}
로그는 다음과 같아야합니다.
4 단계-3 단계의 이름을 사용하여 새 사용자 정의 글꼴 사용
빠른
label.font = UIFont(name: "SourceSansPro-Regular", size: 18)
목표 C
label.font = [UIFont fontWithName:@"SourceSansPro-Regular" size:18];
파인더 및 "정보 입수"에서 TTF를 찾으십시오. "전체 이름 :"이라는 제목 아래에 내가 사용한 이름이 지정되었습니다 fontWithName
(방금 정확한 이름을 복사하여 붙여 넣었습니다.이 경우 '.ttf'확장자가 필요하지 않음).
아직 출시되지는 않았지만 다음 버전의 cocos2d (2d 게임 프레임 워크)는 가변 길이 비트 맵 글꼴을 캐릭터 맵으로 지원합니다.
http://code.google.com/p/cocos2d-iphone/issues/detail?id=317
저자는이 버전의 출시일을 정해 놓지 않았지만 다음 달 또는 두 달이 될 것이라는 게시물을 보았습니다.
한 가지 중요한 알림 : 전체 이름이나 성 이름이 아니라 글꼴과 관련된 "포스트 스크립트 이름"을 사용해야합니다. 이 이름은 종종 글꼴의 일반 이름과 다를 수 있습니다.
작성자가 글꼴에 Mac FOND 이름을 지정 하는 것을 잊었을 수도 있습니다 .
- FontForge 에서 글꼴을 연 다음 요소> 글꼴 정보로 이동하십시오.
- FOND 이름을 설정할 수있는 "Mac"옵션이 있습니다.
- 파일> 글꼴 내보내기에서 새 ttf를 만들 수 있습니다.
내보내기 대화 상자에서 "Apple"옵션을 사용해 볼 수도 있습니다.
면책 조항 : 저는 아이폰 개발자가 아닙니다!
나는 iOS 3.1.2에서이 페이지의 다양한 제안을 시도해 왔으며 다음과 같은 결론을 내렸다.
[UIFont fontWithName:size:]
FontForge를 사용하여 FOND 이름이 설정되어 있어도 Resources 디렉토리의 글꼴을 사용 하는 것만 으로는 작동하지 않습니다.
[UIFont fontWithName:size:]
글꼴이 GSFontAddFromFile을 사용하여 먼저로드되면 작동합니다. 하지만 GSFontAddFromFile
iOS 3.1.2의 일부가 아니므로 @rpetrich에서 설명한대로 동적으로로드해야합니다.
이 단계를 따르십시오
1) 프로젝트에서 글꼴 복사
2) .plist
소스 코드 모드에서 파일 열기 ... (참고- 열지 마십시오 info.plist
)
3) 그 전에-글꼴을 마우스 오른쪽 버튼으로 클릭하고 fontforge 또는 유사한 편집기에서 열고 시스템에서 열어야 install
합니다.install
4) 이것을 입력하십시오
<key>UIAppFonts</key>
<array>
<string>MyriadPro.otf</string>
</array>
5)이 코드를 class .m
[lblPoints setFont:[UIFont fontWithName:@"Myriad Pro" size:15.0]];
여기서 lblPoints는 귀하의 UILabel
끝난!! 그래도 글꼴이 작동하지 않으면 먼저 글꼴 호환성을 확인하십시오.
찾다 ATSApplicationFontsPath
앱 리소스 폴더에 글꼴 파일을 포함 할 수있는 간단한 plist 항목이며 앱에서 "작동"합니다.
이 페이지의 몇 가지 조언을 iOS 5에서 저에게 적합한 것으로 결합했습니다.
먼저 프로젝트에 사용자 지정 글꼴을 추가해야합니다. 그런 다음 @iPhoneDev의 조언에 따라 info.plist 파일에 글꼴을 추가해야합니다.
그렇게하면 다음과 같이 작동합니다.
UIFont *yourCustomFont = [UIFont fontWithName:@"YOUR-CUSTOM-FONT-POSTSCRIPT-NAME" size:14.0];
[yourUILabel setFont:yourCustomFont];
그러나 글꼴의 포스트 스크립트 이름을 알아야합니다. @Daniel Wood의 조언을 따르고 FontBook에있는 동안 command-i를 누르십시오.
그런 다음 사용자 지정 글꼴을 즐기십시오.
먼저 .odt 형식의 글꼴을 리소스에 추가합니다.이 경우에는 DINEngschriftStd.otf를 사용한 다음이 코드를 사용하여 글꼴을 레이블에 할당합니다.
[theUILabel setFont:[UIFont fontWithName:@"DINEngschriftStd" size:21]];
글꼴이 프로젝트에로드되었는지 확인하려면 다음을 호출하십시오.
NSLog(@"Available Font Families: %@", [UIFont familyNames]);
.plist에서 글꼴을 선언해야합니다. '응용 프로그램에서 제공하는 글꼴'레코드를 추가하고 글꼴 이름 (DINEngschriftStd.otf)과 함께 항목 0 문자열을 추가하기 만하면됩니다.
iOS 3.2 이상 : 위의 여러 방법에서 제공하는 방법을 사용하십시오.
- XCode에서 프로젝트의 Resources 폴더에 글꼴 파일 (예 : Chalkduster.ttf )을 추가합니다 .
- info.plist를 열고 UIAppFonts라는 새 키를 추가합니다. 이 키의 유형은 배열이어야합니다.
- 확장명 ( " Chalkduster.ttf ")을 포함하여이 배열에 사용자 지정 글꼴 이름을 추가합니다 .
[UIFont fontWithName:@"Real Font Name" size:16]
응용 프로그램에서 사용하십시오 .
그러나 "실제 글꼴 이름"은 항상 글꼴 북에서 볼 수있는 것은 아닙니다. 가장 좋은 방법은 장치에 표시되는 글꼴과 정확한 이름이 무엇인지 묻는 것입니다.
나는 uifont-name-grabber에 게시 된 uifont-name-grabber를 사용합니다.
원하는 글꼴을 xcode 프로젝트에 놓고 파일 이름을 plist에 추가 한 다음 빌드중인 장치에서 실행하면 UIFont fontWithName:
예상 되는 이름을 사용하여 전체 글꼴 목록이 이메일로 전송됩니다 .
더 나은 해결책은 파일에 새 속성 " Fonts provided by application
"을 추가하는 것 info.plist
입니다.
그런 다음 평소처럼 사용자 정의 글꼴을 사용할 수 있습니다 UIFont
.
iOS 4.1부터 사용자 지정 글꼴을 사용하는 새로운 방법이 있습니다. 이를 통해 앱에 포함 된 파일, 다운로드 한 데이터 또는 보유한 글꼴을 동적으로로드 할 수 있습니다. 또한 필요에 따라 글꼴을로드 할 수 있지만 이전 방법은 앱 시작시 모두로드하므로 글꼴이 많은 경우 너무 오래 걸릴 수 있습니다.
새로운 방법은 ios-dynamic-font-loading에 설명되어 있습니다.
이 CTFontManagerRegisterGraphicsFont
함수를 사용 하여 글꼴 데이터와 함께 버퍼를 제공합니다. 그런 다음 UIFont
이전 방법과 마찬가지로 웹보기에서 사용할 수 있습니다 . 해당 링크의 샘플 코드는 다음과 같습니다.
NSData *inData = /* your font-file data */;
CFErrorRef error;
CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)inData);
CGFontRef font = CGFontCreateWithDataProvider(provider);
if (! CTFontManagerRegisterGraphicsFont(font, &error)) {
CFStringRef errorDescription = CFErrorCopyDescription(error)
NSLog(@"Failed to load font: %@", errorDescription);
CFRelease(errorDescription);
}
CFRelease(font);
CFRelease(provider);
Swift, 코드 방식 : (swift 2.0에서도 작동)
프로젝트에 필요한 글꼴을 추가하고 (이미지를 추가하는 것과 마찬가지로 Xcode로 드래그하기 만하면 됨) 프로젝트가 대상인지 확인
하고이 메서드를 추가하고 사용자 지정 글꼴을로드합니다 (에서 권장 됨 appDelegate didFinishLaunchingWithOptions
).
func loadFont(filePath: String) {
let fontData = NSData(contentsOfFile: filePath)!
let dataProvider = CGDataProviderCreateWithCFData(fontData)
let cgFont = CGFontCreateWithDataProvider(dataProvider)!
var error: Unmanaged<CFError>?
if !CTFontManagerRegisterGraphicsFont(cgFont, &error) {
let errorDescription: CFStringRef = CFErrorCopyDescription(error!.takeUnretainedValue())
print("Unable to load font: %@", errorDescription, terminator: "")
}
}
사용 예 :
if let fontPath = NSBundle.mainBundle().pathForResource("My-Font", ofType: "ttf"){
loadFont(fontPath)
}
글꼴 사용 :
UIFont(name: "My-Font", size: 16.5)
리소스 폴더 내에 필요한 "FONT"파일을 추가 할 수 있습니다. 그런 다음 프로젝트 Info.plist
파일 로 이동하여 "응용 프로그램에서 제공하는 글꼴"키와 "글꼴 이름"값을 사용합니다.
그런 다음 메서드를 호출 할 수 있습니다. [UIFont fontwithName:@"FONT NAME" size:12];
나는 모든 것을 가능하게 만들었지 만 새로운 글꼴이 나타나지 않아 해결책을 찾았습니다.
fot 파일 (otf 또는 ttf)을 드래그 할 때 "대상에 추가"아래의 확인란을 선택하는 것을 잊지 마십시오.
그 후 글꼴이 나타나고 모든 것이 잘 작동합니다.
위의 답변 중 일부는 정확하지만 여전히 글꼴에 문제가있는 사람들을 위해 자세한 시각적 자습서를 작성했습니다.
위의 솔루션은 plist에 글꼴을 추가하고
[self.labelOutlet setFont:[UIFont fontWithName:@"Sathu" size:10]];
올바른 것입니다. 이제 다른 hackish 방법을 사용하십시오. 글꼴 이름을 찾고 추가하는 데 여전히 문제가있는 경우 여기 자습서가 있습니다.
예, 응용 프로그램에서 사용자 정의 글꼴을 사용할 수 있습니다.
거기에 따라 단계적으로 :
지원 파일의 프로젝트에 사용자 정의 글꼴 파일 추가
Info.plist 파일에 UIAppFonts라는 키를 추가합니다.
이 키를 배열로 만들기
가지고있는 각 글꼴에 대해 UIAppFonts 배열에 항목으로 글꼴 파일의 전체 이름 (확장자 포함)을 입력하십시오.
Info.plist 저장 이제 응용 프로그램에서 [UIFont fontWithName : @ "your Custom font Name"size : 20]를 호출하여 UILabels에서 사용할 사용자 지정 글꼴을 가져올 수 있습니다. 올바른 글꼴을 얻지 못한 경우이를 적용한 다음 두 번 클릭합니다. 사용자 정의 글꼴에 윗면 글꼴 이름이 오는 것을 확인하고이 글꼴을 복사하고 여기에 붙여 넣습니다. [UIFont fontWithName : @ "here past your Custom font Name"size : 20]
나는 당신이 정답을 얻기를 바랍니다
예, 응용 프로그램에서 사용자 정의 글꼴을 사용할 수 있습니다.
거기에 따라 단계적으로 :
- 지원 파일의 프로젝트에 사용자 정의 글꼴 파일 추가
Info.plist
UIAppFonts라는 파일에 키를 추가합니다 .- 이 키를 배열로 만들기
- 가지고있는 각 글꼴에 대해 UIAppFonts 배열에 항목으로 글꼴 파일의 전체 이름 (확장자 포함)을 입력하십시오.
Info.plist
응용 프로그램에서 지금 저장 하면 간단히 호출[UIFont fontWithName:@"your Custom font Name" size:20]
하여 사용자 정의 글꼴을 가져올 수 있습니다.UILabels
이 글꼴을 적용한 후 올바른 글꼴을 얻지 못하면 사용자 정의 글꼴을 두 번 클릭하고 조심스럽게 상단 글꼴 이름이 [UIFont fontWithName:@" here past your Custom font Name" size:20]
오는 것을 확인 하고이 글꼴을 복사하고 붙여 넣으십시오. 여기에 올바른 대답을 얻으시기 바랍니다.
참고 URL : https://stackoverflow.com/questions/360751/can-i-embed-a-custom-font-in-an-iphone-application
'developer tip' 카테고리의 다른 글
터미널에서 현재 날짜와 시간을 가져오고 터미널에서 사용자 지정 명령을 설정하는 방법은 무엇입니까? (0) | 2020.09.29 |
---|---|
검증 실패 또는 유효하지 않은 중복에 대한 REST HTTP 상태 코드 (0) | 2020.09.29 |
IPython 노트북 matplotlib 플롯을 인라인으로 만드는 방법 (0) | 2020.09.29 |
XML에서 태그 블록을 주석 처리하려면 어떻게합니까? (0) | 2020.09.29 |
항목의 상위 항목 검색 오류 : AppCompat v23으로 업그레이드 한 후 지정된 이름과 일치하는 리소스를 찾을 수 없습니다. (0) | 2020.09.29 |