From ecbb6aeb5f10e0ca4ba404570ee36961273fc139 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Wed, 30 Sep 2015 18:43:25 +0900 Subject: [PATCH] * src/macfont.m: Fix compilation with USE_CT_GLYPH_INFO. --- src/macfont.m | 84 ++++++++++++++++++++++++--------------------------- 1 file changed, 40 insertions(+), 44 deletions(-) diff --git a/src/macfont.m b/src/macfont.m index 97a255bf018..69640766d4e 100644 --- a/src/macfont.m +++ b/src/macfont.m @@ -198,57 +198,53 @@ mac_screen_font_get_advance_width_for_glyph (ScreenFontRef font, CGGlyph glyph) return advancement.width; } +#if !USE_CT_GLYPH_INFO static CGGlyph mac_font_get_glyph_for_cid (CTFontRef font, CTCharacterCollection collection, CGFontIndex cid) { -#if USE_CT_GLYPH_INFO - return mac_ctfont_get_glyph_for_cid ((CTFontRef) font, collection, cid); -#else - { - CGGlyph result = kCGFontIndexInvalid; - NSFont *nsFont = (NSFont *) font; - unichar characters[] = {0xfffd}; - NSString *string = - [NSString stringWithCharacters:characters - length:ARRAYELTS (characters)]; - NSGlyphInfo *glyphInfo = - [NSGlyphInfo glyphInfoWithCharacterIdentifier:cid - collection:collection - baseString:string]; - NSDictionary *attributes = - [NSDictionary dictionaryWithObjectsAndKeys:nsFont,NSFontAttributeName, - glyphInfo,NSGlyphInfoAttributeName,nil]; - NSTextStorage *textStorage = - [[NSTextStorage alloc] initWithString:string - attributes:attributes]; - NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init]; - NSTextContainer *textContainer = [[NSTextContainer alloc] init]; - NSFont *fontInTextStorage; - - [layoutManager addTextContainer:textContainer]; - [textContainer release]; - [textStorage addLayoutManager:layoutManager]; - [layoutManager release]; - - /* Force layout. */ - (void) [layoutManager glyphRangeForTextContainer:textContainer]; - - fontInTextStorage = [textStorage attribute:NSFontAttributeName atIndex:0 - effectiveRange:NULL]; - if (fontInTextStorage == nsFont - || [[fontInTextStorage fontName] isEqualToString:[nsFont fontName]]) - { - NSGlyph glyph = [layoutManager glyphAtIndex:0]; + CGGlyph result = kCGFontIndexInvalid; + NSFont *nsFont = (NSFont *) font; + unichar characters[] = {0xfffd}; + NSString *string = + [NSString stringWithCharacters:characters + length:ARRAYELTS (characters)]; + NSGlyphInfo *glyphInfo = + [NSGlyphInfo glyphInfoWithCharacterIdentifier:cid + collection:collection + baseString:string]; + NSDictionary *attributes = + [NSDictionary dictionaryWithObjectsAndKeys:nsFont,NSFontAttributeName, + glyphInfo,NSGlyphInfoAttributeName,nil]; + NSTextStorage *textStorage = + [[NSTextStorage alloc] initWithString:string + attributes:attributes]; + NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init]; + NSTextContainer *textContainer = [[NSTextContainer alloc] init]; + NSFont *fontInTextStorage; - if (glyph < [nsFont numberOfGlyphs]) - result = glyph; - } + [layoutManager addTextContainer:textContainer]; + [textContainer release]; + [textStorage addLayoutManager:layoutManager]; + [layoutManager release]; - [textStorage release]; + /* Force layout. */ + (void) [layoutManager glyphRangeForTextContainer:textContainer]; - return result; - } + fontInTextStorage = [textStorage attribute:NSFontAttributeName atIndex:0 + effectiveRange:NULL]; + if (fontInTextStorage == nsFont + || [[fontInTextStorage fontName] isEqualToString:[nsFont fontName]]) + { + NSGlyph glyph = [layoutManager glyphAtIndex:0]; + + if (glyph < [nsFont numberOfGlyphs]) + result = glyph; + } + + [textStorage release]; + + return result; } #endif -- 2.39.2