iOS 7.0.3에서“HelveticaNeue-Italic”에 발생한 일


100

iPod touch를 iOS 7.0.3으로 업그레이드했는데 "HelveticaNeue-Italic"이 사라진 것 같습니다. 다음을 사용하여 전화로 쿼리 할 때 :

[UIFont fontNamesForFamilyName:@"Helvetica Neue"]

다음 fontNames (13)를 얻습니다.

HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-ThinItalic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack

시뮬레이터에서 동일한 쿼리를 실행하면 (14) :

HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
**HelveticaNeue-Italic,**
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-Thin_Italic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack

다른 사람이 보셨나요?

---- 새로운 정보 ----

WWDC 2013 비디오 "텍스트 키트와 함께 글꼴 사용"으로 돌아가서 흥미로운 부분은 12:22에 시작됩니다. 발표자는 OS X의 "MetaFonts"를 예로 들어 설명합니다. 그가 말하는 것은 아래의 글꼴이 다음과 같이 호출된다는 것입니다.

+ (NSFont *)messageFontOfSize:(CGFloat)fontSize

버전 또는 용도에 따라 동일한 기본 글꼴을 반환하지 않을 수도 있습니다. 그의 예는 Lucinda Grande였습니다. 그는 "HelveticaNeue-Italic"을 사용하는 것이 버전간에 사라질 수 있다고 말하는 것 같지 않았습니다.

그래서 iOS 7에서 실험을 구성했습니다. 다음 코드로 글꼴을 만들었습니다.

UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:@"Helvetica Neue" size:16.0];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];

UIFont *fontWithDescriptor = [UIFont fontWithDescriptor:symbolicFontDescriptor size:16.0];

fontWithDescriptor에 대해 유효한 UIFont를 얻었고 fontName의 글꼴을 다음과 같이 쿼리했을 때 :

[fontWithDescriptor fontName]

나는 돌아왔다...

HelveticaNeue-Italic

그림을 이동???

따라서 7.0.3에 대한 가능한 대답은 위의 코드 인 것 같습니다.

---- 추가 조정 ----

솔루션이 위에서 작동했지만 공식적으로 옳다고 생각하지 않습니다. 다음 솔루션으로 전환했습니다.

    UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] init];

    UIFontDescriptor *fontDescriptorForHelveticaNeue = [fontDescriptor fontDescriptorWithFamily:@"Helvetica Neue"];
    UIFontDescriptor *symbolicFontDescriptor = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];

    textFont = [UIFont fontWithDescriptor:symbolicFontDescriptor size:textFontPointSize];

이것은 모든 옳은 일을하는 것처럼 보입니다. 다른 글꼴 패밀리로 이전 접근 방식을 시도했는데 fontName 및 fontFamily와 혼동되는 것 같습니다. 도움이 되었기를 바랍니다!


나도 봤어. 무슨 일이 일어 났는지 모르지만 그것은 꽤 회귀입니다.
ipodishima

흥미롭게도 iOS 7.0.3의 Pages는 Helvetica Neue Italic을 보여줍니다 : i.stack.imgur.com/xpJKl.png
Leo Natan

따라서 글꼴 설명자를 사용하면 실제로 내 7.0.3 iPhone에서 기울임 꼴 글꼴이 표시됩니다.
Rick van der Linde

이것은 iOS 7.0.4에서도 문제가됩니다
s.ka

답변:


31

이것은 Apple 버그입니다. iOS 7.0.3에서 도입되었으며 아직 iOS 7.0.4에서 수정되지 않았습니다. iOS 7.1의 개발자 미리보기에서 수정 된 것으로 보입니다. 다음은 문제를 해결하기위한 코드 (개발자 포럼에서 Apple 제공)입니다.

#import <CoreText/CoreText.h>

CGFloat size = 14;
UIFont *font = [UIFont fontWithName:@"HelveticaNeue-Italic" size:size];
if (font == nil && ([UIFontDescriptor class] != nil)) {
    font = (__bridge_transfer UIFont*)CTFontCreateWithName(CFSTR("HelveticaNeue-Italic"), size, NULL);
}

현재 버전의 Xcode (5.0.1 (5A2053))에서는이 글꼴이 Interface Builder의 글꼴 드롭 다운 목록에 옵션으로 나열되지 않는다는 점도 주목할 가치가 있습니다. 따라서 이전에이 글꼴로 레이블을 구성한 경우 UI가 혼란스럽고 레이블에 런타임시 다른 글꼴과 크기가 할당된다는 것을 알 수 있습니다 (아래의 ui screencap 참조). 스토리 보드 / xib에 구성된 레이블의 경우 코드에서 글꼴을 재설정해야합니다.

참고로 여기 에 개발자 포럼의 문제에 대한 토론이 있습니다.

여기에 이미지 설명 입력


당신은 당신의 모든 용도를 다른 것으로 대체했다고 말합니다. 무엇으로 교체 했습니까? XIB 파일에서 HelveticaNeue-MediumItalic으로 바꾸면 해당 글꼴이 iOS 7에 도입 된 것으로 보이기 때문에 iOS 6 및 이전 버전에서 잘못된 결과가 표시되는 것을 발견했습니다.
GBegen

HelveticaNeue-LightItalic으로 대체했습니다. 그래도 언제 도입되었는지 확실하지 않습니다. 제 앱은 iOS7 +입니다
Mike Vosseller 2013-10-24

7

이것은 iOS 7.0.3의 버그입니다.

HelveticaNeue-Italic을 명시 적으로 사용하는 경우 다음 해결 방법을 사용하여 만들 수 있습니다.

UIFont* font = (__bridge_transfer UIFont*)CTFontCreateWithName(CFSTR("HelveticaNeue-Italic"), fontSize, NULL);

그러나이 해결 방법은 iOS 7 에서만 작동합니다. 그것은 아이폰 OS 6 (때문에 배포하지 않습니다 CTFontRefUIFont아이폰 OS 6 브리지 무료하지 않았다). 그러나 iOS 6에서는 일반 글꼴 조회 코드 만 사용할 수 있습니다.


4

그것이 버그라는 것이 나의 믿음입니다. 나는 Apple에 그렇게 제출했습니다. 슬프게도 내 앱이 이제 충돌합니다. 글꼴은 내가 사용중인 타사 라이브러리에서 사용됩니다. 트위터의 많은 사람들이 문제를보고하고 있습니다.


1
참고 : 방금 테스트했는데 버그가 iOS 7.0.4에 여전히 존재합니다.
David Lari 2013

3

동적 다음 이탤릭체로 액세스하는 대신 이름으로 글꼴을 액세스하는 경우 [UIFont fontWithName:@"HelveticaNeue-Italic" size:15.0f] 사용 [UIFont italicSystemFontOfSize:15.0f]이 나를 위해 잘 작동합니다.


이것은 아마도이 문제에 대한 가장 깨끗한 해결 방법 일 것입니다. iOS 6 지원이 필요한 fontWithName:size:경우 먼저 실행을 시도 하고 결과가 nil이면 run italicSystemFontOfSize:. 항상 무언가를 반환하고 최소한 충돌을 피해야합니다.
SaltyNuts 2013

2

나는 현재 세션을 찾지 못했지만 iOS7에서 더 이상 사용할 수있는 글꼴에 의존 할 수 없다고 말했습니다. 앱 수명 동안 변경 될 수도 있습니다. 기본적으로 의미하는 바는 앱에서 글꼴을 지정할 때 엉망이되어 글꼴 설명 자나 선호하는 글꼴을 대신 사용하는 것입니다!


2
내가 찾을 수있는 가장 가까운 일치는 asciiwwdc.com/2013/sessions/223 이지만 시스템에서 제공하는 글꼴이 아닌 다운로드 가능한 글꼴을 참조하는 것 같습니다.
Hilton Campbell

위의 새로운 정보를 참조하십시오. 발표자가 말하는 것은 "MetaFonts"가 여러 버전 또는 용도에 걸쳐 동일한 기본 글꼴에 매핑되는 것을 믿을 수 없다는 것입니다. 나는 그가 "HelveticaNeue-Italic"과 같은 것이 사라질 가능성조차 있다고 말하는 것 같지 않다.
Scott Sarnikowski

1

작동하는 것 같은 또 다른 해결책을 찾았습니다. 전화를 로그 아웃했습니다.

[[UIFont italicSystemFontOfSize:12.0] fontName]

사용중인 실제 시스템 기울임 꼴 글꼴이 무엇인지 확인하고 ".HelveticaNeueInterface-ItalicM3"을 반환했습니다. 간단한 테스트를 통해

[UIFont fontWithName:@".HelveticaNeueInterface-ItalicM3" size:12.0]

공장! 시각적으로 비교해 보면 위의 호출에서 반환 된 글꼴은 원래 'HelveticaNeue-Italic'글꼴과 정확히 동일한 것으로 보입니다.

이 문제는 거의 확실하게 버그입니다. Helvetica Neue는 iOS 7의 기본 글꼴이므로 해당 제품군의 글꼴이 누락되어서는 안됩니다. Xcode v.5.0에서는 모든 것이 잘 작동했지만 5.0.1로 업그레이드하자마자이 문제가 나타나기 시작했습니다. 나는 Apple에 버그를 신고했습니다. 그때까지는이 솔루션이 작동하는 것 같습니다 ...


1

Apple에 제출 한 버그 보고서는 "중복으로 마감 됨"으로 표시되었습니다. 나는 그들이 그것을 버그라고 생각한다는 것을 의미합니다. 그러나 iOS 7.0.4는 버그를 수정하지 않습니다.


1
나는 같은 반응을 얻었다. 그들이 그것을 고치기를 바랍니다.
Scott Sarnikowski 2011

1

이 버그는 iOS 7.1 베타 1에서 수정 된 것 같습니다 [UIFont fontWithName:@"HelveticaNeue-Italic" size:size];. 글꼴을 반환합니다.


좋은 소식이지만 여전히 NDA에 있습니다.
Vincent Tourraine 2013

9
그 위험을 감수하겠습니다.
Leo Natan 2013

0

iOS 7.0.3 및 7.0.4에서만 충돌하는 것과 동일한 충돌이 발생했으며 다른 모든 버전에서 완벽하게 작동합니다. 많은 조사 끝에 iOS 7.0.3 및 7.0.4 버전에서는 @ "HelveticaNeue-Italic"을 사용할 수 없다는 것을 알게 되었기 때문에 해당 버전에서 충돌을 극복했습니다.

아래 코드로 문제를 해결했습니다. 이것은 도움이 필요한 사람에게 도움이 될 수 있습니다.

self.headerFont = [UIFont fontWithName:@"HelveticaNeue-Italic" size:16.0f];
if (self.headerFont == nil) {
    self.headerFont = [UIFont fontWithName:@"HelveticaNeue" size:16.0f];
}

충돌 로그는 다음과 같습니다.

[__NSCFConstantString pointSize]: unrecognized selector sent to instance 

-1

UIWebView의 HelveticaNeue 기울임 꼴 지원에 대해 아무도 언급하지 않았기 때문에 결과를 공유 할 것이라고 생각했습니다.

7.0.6부터는 UIWebView에서 일반 기울임 꼴이 여전히 누락되었으며 동일한 제품군에서 UltraLightItalic으로 대체되는 것으로 보입니다. 이것은 너무 가볍기 때문에 일반 무게의 기울임 꼴이 아닌 HelveticaNeue 텍스트 바로 옆에있을 때 약간 이상하게 보입니다.

내 해결 방법은 HelveticaNeue 대신 일반 Helvetica를 사용하는 것이었지만 기울임 꼴에만 사용되었습니다. 따라서 다음과 같은 CSS가있는 경우 :

.myCssClass {
    font-family:HelveticaNeue;
    /* etc, etc */
}

... 재정의 할 두 개의 다른 클래스를 추가 <i>하고 <em>다음을 수행합니다.

.myCssClass i  { font-family:Helvetica; }
.myCssClass em { font-family:Helvetica; }

일반 Helvetica 기울임 꼴 글꼴은 괜찮아 보이며 HelveticaNeue가 아니라는 것을 아무도 눈치 채지 못할 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.