Commit ecbb6aeb authored by YAMAMOTO Mitsuharu's avatar YAMAMOTO Mitsuharu

* src/macfont.m: Fix compilation with USE_CT_GLYPH_INFO.

parent d1fb5e6c
......@@ -198,57 +198,53 @@ static void mac_font_get_glyphs_for_variants (CFDataRef, UTF32Char,
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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment