[ios] 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 family: String in UIFont.familyNames {
        print("\(family)")
        for names: String in UIFont.fontNames(forFamilyName: family) {
            print("== \(names)")
        }
    }

// 목표 -c

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에서 글꼴을 사용하려면 글꼴의 FULL NAME (포스트 스크립트 이름)을 기반으로 글꼴을로드해야합니다 . 이는 글꼴의 실제 FILE NAME 과 때때로 (일반적으로) 다릅니다 .

글꼴 파일 “Arial-regular.ttf”의 이름을 “foo.ttf”로 변경한다고 상상해보십시오. 방금 이름을 바꾼 글꼴 파일에 포함 된 글꼴은 여전히 ​​”Arial-regular”입니다.

이 스레드에 이미 글꼴 이름을 가져 오는 좋은 프로그래밍 방법이 있지만 명령 줄을 사용하는 다른 방법이 있습니다.

Mac 또는 Linux를 사용하는 경우 사용자 정의 글꼴이있는 디렉토리의 명령 줄에서이 스크립트를 실행하기 만하면됩니다 ( 이미 설치된 fontconfigfc-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]);
        }
  }

도움이 되길 바랍니다 …


답변

프로그래밍 방식으로 지정된 글꼴 파일의 글꼴 이름을 찾으려면 다음을 수행하십시오.

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필요에 따라 던질 수있는 물체로 교체하십시오 .


답변

스위프트 3.0

for familyName in UIFont.familyNames {
        for fontName in UIFont.fontNames(forFamilyName: familyName ) {
            print("\(familyName) : \(fontName)")
        }
    }