Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS Quartz embed font in pdf

I'm trying to generate a PDF page with text that has custom symbols (e.g. "€") using a custom font. I've created a PDF context and page using UIGraphicsBeginPDFContextToData and UIGraphicsBeginPDFPage. My code for rendering text looks something like:

NSString *fontFile = [[NSBundle mainBundle] pathForResource:@"somefont.otf" ofType:nil];
CGDataProviderRef dataProvider = CGDataProviderCreateWithFilename([fontFile cStringUsingEncoding:NSASCIIStringEncoding]);
CGFontRef cgfont = CGFontCreateWithDataProvider(dataProvider);
CTFontRef ctfont = CTFontCreateWithGraphicsFont(cgfont, 10, NULL, NULL);
CFRelease(dataProvider);        

NSString *text = @"Hello €";
int len = [text length];
CGGlyph glyphs[len];
CTFontGetGlyphsForCharacters(ctfont, (const unichar*)[text cStringUsingEncoding:NSUnicodeStringEncoding], glyphs, len);
CGContextSetTextDrawingMode(_context, kCGTextFill);
CGContextShowGlyphsAtPoint(_context, 10, 10, glyphs, len);
CFRelease(cgfont);
CFRelease(ctfont);

Rendering the €-symbol works (because of CTFontGetGlyphsForCharacters), but the font is not embedded in the pdf. Is there any way to do this?

like image 747
toucan Avatar asked Mar 07 '12 10:03

toucan


1 Answers

I have fought with this for quite a while and it turned out that TTF is automagically embedded while OTF is not. Converting my font just worked.

like image 164
Max Avatar answered Sep 28 '22 13:09

Max