2009-11-29 2 views
0

내 고객이 영어로만 맞춤 TTF 글꼴을 제공했습니다. 따라서 TTF를 영어로만로드하고 다른 언어로는 사용 가능한 시스템 글꼴로 대체해야합니다.영어 버전에만 글꼴을 등록하려면 어떻게합니까?

나는 다음과 같은 단계를하고있는 중이 야 : 내 앱

  1. 등록 글꼴. Resources 폴더로 복사하고 프로젝트에 추가하십시오.
  2. 글꼴 이름을로드하는 중입니다.

    NSMutableDictionary * aTitleAttributes = [[[NSMutableDictionary alloc] initWithObjectsAndKeys: 
           [NSFont fontWithName:CP_FONT_NAME size:[NSFont systemFontSize]], NSFontAttributeName, 
           aParagraphStyle, NSParagraphStyleAttributeName, 
                 nil] autorelease]; 
    

하지만 모든 언어에 대해이 방법으로 글꼴을로드하고 있기 때문에이, 또 다른 문제로 결과를 내 현지화 텍스트는 영어 보인다. 따라서 나는 그래서 아무도 나를 앱 글꼴 등록과 권리 내가 뭐하는 거지 무엇이든 실현하는 데 도움이 될 수 있습니다

NSFont *font = nil; 
If (currentLocaleIsEnglish()) { 
/// font to load my custom TTF 
} 
Then use [NSFont fontwithName:font ...] 

같은 몇 가지 조건을한다고 생각합니다. 그렇다면 영어 폰트에만 내 폰트를 어떻게 등록 할 수 있습니까? 다른 로케일의 경우이 글꼴을 사용할 수 없으므로 NSFont::fontWithName은 nil을 반환하고 자동으로 SystemFont로 폴백하므로 내 로캘이 올바르게 표시됩니다.

그렇지 않으면 위에서 언급 한 것과 같은 조건이 있어야합니다. 그렇다면 어떻게 currentLocale이 영어인지를 찾기위한 API를 작성할 수 있습니까?

+0

'NSFont :: fontWithName'과 같은 것이 없습니다. 올바른 메소드 시그니처는'+ [NSFont fontWithName :]'입니다. +는 클래스 메소드임을 나타내고 +는 하나의 인수를 취하는 것을 나타냅니다. –

답변

1

NSLocale에서 현재 로케일을 가져온 다음 objectForKey: 메시지를 보내고 NSLocaleLanguageCode을 요청하십시오. 현재 언어 코드가 en, en_US, en_GB, en_AU 또는 en_CA 인 경우 현재 언어는 영어의 일부 형식입니다.

테스트를 단순화하기 위해 언어 코드를 배열에 넣거나 설정하고 현재 언어 코드의 해당 멤버쉽을 테스트 할 수 있습니다. 또는 더 나은 방법은 키로 사전에 넣고 그 값은 모두 CP_FONT_NAME입니다. 클라이언트가 나중에 다른 언어의 다른 글꼴을 제공하는 경우, 새 글꼴 - 언어 쌍을 쉽게 추가 할 수 있습니다.

관련 문제