otf 또는 ttf 파일에서 글꼴 이름을 어떻게 얻습니까?
이전 앱에서 사용자 지정 글꼴을 사용했습니다.
파일 이름은 "ProximaNova-Regular.otf"였고 공장 글꼴을로드하기 위해 ...
[UIFont fontWithName:@"ProximaNova-Regular" size:20];
이것은 완벽하게 작동했습니다.
이제이 새 앱에는 세 개의 글꼴 파일이 있습니다.
Dude_Willie.otf
Impact
handsean.ttf
하지만 어떻게로드 해야할지 모르겠습니다.
나는 시도했다
[UIFont fontWithName:<the file name> size:20];
그러나 이것은 Helvetica를 사용하는 언급 돌아갑니다.
사용할 수 있습니까?
iOS 앱에서 새 글꼴을 추가하고 사용 다음 네 가지 간단한 단계를 수행합니다.
- your_new_font.ttf 또는 your_new_font.otf 를 Xcode 프로젝트에 추가하십시오.
- 프로젝트의 info.plist에서 your_new_font.ttf 또는 your_new_font.otf 에 대한 새 항목을
UIAppFonts
배열에 추가하십시오 (이 항목의 일반 텍스트는 '응용 프로그램에서 제공하는 글꼴'입니다). - 이 시점에서 새로 추가 된 your_new_font를 포함하여 앱에서 액세스 할 수있는 모든 글꼴을 선택하여 임시 디버그 코드를 추가하는 것이 좋습니다.
for(NSString *fontfamilyname in [UIFont familyNames]) { NSLog(@"family:'%@'",fontfamilyname); for(NSString *fontName in [UIFont fontNamesForFamilyName:fontfamilyname]) { NSLog(@"\tfont:'%@'",fontName); } NSLog(@"-------------"); }
- 디버그 출력에서 새 글꼴의 '패밀리'및 '글꼴'이름을 찾습니다. 새 글꼴 패밀리에 해당하는 '글꼴'이름으로 모든 것을 전달하면 (새 글꼴 '패밀리'와 관련된 두 개 이상의 '글꼴'이있을 수 있음)
UIFont *myNewFont = [UIFont fontWithName:@"font_name_from_debug_output" size:20]
비즈니스에 종사해야합니다!
TTF를 마우스 오른쪽 버튼으로 클릭-> 정보 확인
"전체 이름"은 당신이 찾고있는 것입니다.
그것이 TTF와 함께 저에게 저에게있었습니다.
편집하다 :
정보 검증의 "전체 이름"과 다른 이름을 가진 글꼴을 사용했습니다.
이 검증의 검증을 위의 빠른 확인이 작동하지 위해 프로젝트에서 다음 코드를 실행합니다.
for (NSString *fontFamilyName in [UIFont familyNames]) {
for (NSString *fontName in [UIFont fontNamesForFamilyName:fontFamilyName]) {
NSLog(@"Family: %@ Font: %@", fontFamilyName, fontName);
}
}
사용하려는 글꼴의 올바른 이름을 검색하십시오.
Swift 3.0 코드 :
for fontFamilyName in UIFont.familyNames{
for fontName in UIFont.fontNames(forFamilyName: fontFamilyName){
print("Family: \(fontFamilyName) Font: \(fontName)")
}
}
- 글꼴 설치
- Mac에서 서체 관리자 앱 열기
- 글꼴을 선택하고 '정보'버튼을 클릭하십시오.
- 찾고있는 이름은 PostScript 이름입니다.
- MacOS :보기-> 글꼴 정보 표시
iOS에서 글꼴을 사용하는 글꼴의 전체 이름 (포스트 펼쳐 이름)을 기반으로 글꼴을로드해야합니다 . 이는 글꼴 의 실제 파일 이름 과 (일반적으로) .
글꼴 "Arial-regular.ttf"의 이름을 "foo.ttf"로 변경하는 상상해. 방금 이름을 바꾼 글꼴 파일에 포함 된 글꼴은 여전히 "Arial-regular"입니다.
이 문법에 이미 글꼴 이름을 가져 와서 좋은 프로그래밍 방법이 명령 줄을 사용하는 방법이 있습니다.
Mac 또는 Linux를 사용하는 경우 사용자 정의 글꼴이있는 디렉토리의 명령 줄 에서이 펼쳐지는 곳을 실행하기 만하면 ( 이미 많은 fontconfig 의 fc-scan
유틸리티를 사용 하면 homebrew를 사용할 수 있습니다 . :) .brew install fontconfig
for file in "$arg"*.{ttf,otf}; do fc-scan --format "%{postscriptname}\n" $file; done
다음은 내 ~/Library/Fonts
디렉토리에서 실행 되는 위 명령의 스크린 샷입니다 .
위의 펼쳐지는 현재 디렉토리의 모든 .ttf
및 .otf
파일을 통해 실행 된 다음 XCode 또는 다른 곳에서 글꼴 파일을 참조하는 데 사용할 수있는 각 글꼴에 대한 PostScript 이름 을 인쇄합니다 .
추가 정보 (PostScriptName, Filename) 및 일부 색상 코딩으로 멋지게 다음 대체 대체를 사용할 수 있습니다.
for file in "$arg"*.{ttf,otf}; do
postscriptname=$(fc-scan --format "%{postscriptname}\n" $file);
printf "\033[36m PostScript Name:\033[0m %s \e[90m(%s)\033[0m\n" "$postscriptname" "$file";
done
이 방법은 AppDelegate.m 파일 내부에 코드를 복사하여 넣는 것보다 약간 빠르며, 널리 사용되는 방법 인 새 글꼴 파일을 추가 할 때마다 이름을 인쇄하고 FontBook에서 글꼴을 사용하는 것보다 빠입니다. PostScript 이름을 검사하십시오.
유용한 팁 : 터미널에서 위의 펼쳐지는 모든 파일을 지정하면 현재 디렉터리의 모든 파일에 대한 모든 PostScript 글꼴 이름을 가져 오는 단일 명령 입력하기 fontnames
만하면 할 모든 작업 fontnames
글꼴이있는 디렉토리 내부의 터미널에 입력 하면 PostScript 이름이 자동으로 인쇄됩니다. 그리고 개발 워크 플로에서 시간을 절약하고 필요할 때 편리하게 사용할 수 있습니다.
도움이 되셨기를 바랍니다!
이름을 얻는 방법을 알고 싶습니다.
NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]];
for (NSInteger indFamily=0; indFamily<[familyNames count]; ++indFamily)
{
NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]);
NSArray *fontNames = [[NSArray alloc] initWithArray:
[UIFont fontNamesForFamilyName:[familyNames objectAtIndex:indFamily]]];
for (NSInteger indFont=0; indFont<[fontNames count]; ++indFont)
{
NSLog(@" Font name: %@", [fontNames objectAtIndex:indFont]);
}
}
도움이 되길 바랍니다 ...
스위프트 3.0
for familyName in UIFont.familyNames {
for fontName in UIFont.fontNames(forFamilyName: familyName ) {
print("\(familyName) : \(fontName)")
}
}
Swift 4.0+ 솔루션
for fontFamilyName in UIFont.familyNames {
print("family: \(fontFamilyName)\n")
for fontName in UIFont.fontNames(forFamilyName: fontFamilyName) {
print("font: \(fontName)")
}
}
출력 :
제품군 : Apple SD Gothic Neo
글꼴 : AppleSDGothicNeo-Thin
글꼴 : AppleSDGothicNeo-Light
프로젝트 / 앱에 글꼴을 추가 한 후 앱에 사용 가능한 모든 글꼴을 인쇄하려면이 코드를 추가합니다 (아마도 앱 위임 didFinishLaunchingWithOptions 메서드에 있음). 해당 목록에서 원하는 글꼴을 식별 할 수 있어야합니다. 나중에 불필요한 코드를 제거하는 것을 잊지 마십시오.
for (NSString *fontFamilyName in [UIFont familyNames]) {
for (NSString *fontName in [UIFont fontNamesForFamilyName:fontFamilyName]) {
NSLog(@"Family: %@ Font: %@", fontFamilyName, fontName);
}
}
프로그래밍 방식으로 주어진 글꼴 파일의 글꼴 이름을 찾으려면 다음을 수행하십시오.
import Foundation
func loadFontName(for file: URL) throws -> String {
let data = try Data(contentsOf: file)
guard let provider = CGDataProvider(data: data as CFData) else {
throw Error("Could not create data provider")
}
guard let font = CGFont(provider) else {
throw Error("Could not load font")
}
guard let name = font.postScriptName else {
throw Error("Could not get font name from font file")
}
return name as String
}
Error
필요에 따라 던질 수있는 물체로 교체하십시오 .
스위프트 1.2 :
for familyName in UIFont.familyNames() {
for fontName in UIFont.fontNamesForFamilyName(familyName as! String) {
println("\(familyName) : \(fontName)")
}
}
otfinfo --info arial.ttf를 사용하여 명령 줄에서 이름을 가져올 수도 있습니다. 포스트 스크립트 이름은 UIFont 생성자에 전달해야하는 이름입니다.
글꼴 파일의 familyNames를 기록한 다음 글꼴에 액세스합니다.
// You can log all font family names suing **fontNamesForFamilyName**
NSLog(@" font name %@", [UIFont fontNamesForFamilyName:@"the file name"]);
도움이되기를 바랍니다.
에뮬레이터 또는 장치에 존재하는 모든 기본 글꼴을 검색하지 않는 또 다른 "빠르고 실용적인"방법은 스토리 보드에있는 글꼴을 사용하는 것입니다. 그런 다음 텍스트 편집기로 스토리 보드를 편집하는 경우 "customFonts"태그를 검색하면 "내부"이름과 함께 사용되는 글꼴을 볼 수 있습니다.
<customFonts key="customFonts">
<array key="Linotype - AvenirNextLTPro-Bold.otf">
<string>AvenirNextLTPro-Bold</string>
</array>
<array key="Linotype - AvenirNextLTPro-Regular.otf">
<string>AvenirNextLTPro-Regular</string>
</array>
<array key="TradeGothicLTPro-BdCn20.otf">
<string>TradeGothicLTPro-BdCn20</string>
</array>
</customFonts>
에 대한 목록의 글꼴 이름과 가족 맥 OS 와 스위프트 4.1 :
NSFontManager.shared.availableFonts.map { print($0) }
NSFontManager.shared.availableFontFamilies.map { print($0) }
Swift 4.0 지원
이것은 모든 글꼴 패밀리를 인쇄하기위한 한 줄 코드이며 글꼴 이름입니다.
override func viewDidLoad() {
super.viewDidLoad()
//Main line of code
UIFont.familyNames.sorted().forEach({ print($0); UIFont.fontNames(forFamilyName: $0 as String).forEach({print($0)})})
}
참고 URL : https://stackoverflow.com/questions/16788330/how-do-i-get-the-font-name-from-an-otf-or-ttf-file
'ProgramingTip' 카테고리의 다른 글
PHP cURL 오류 코드 60 (0) | 2020.10.22 |
---|---|
부트로 버튼에 링크를 추가하는 방법은 무엇입니까? (0) | 2020.10.22 |
머티리얼 디자인 탐색 창에서 햄버거 아이콘의 색상을 변경하는 방법 (0) | 2020.10.22 |
배열 목록 스왑 요소 (0) | 2020.10.22 |
therubyracer-Gem :: Ext :: BuildError : ERROR : gem 내장 확장을 빌드하지. (0) | 2020.10.22 |