Надеюсь, это довольно просто. По сути, я рисую некоторый текст в NSView, и мне нужно знать «физическую» высоту и ширину нарисованных глифов.
Шрифт с фиксированной шириной, поэтому мне не нужно беспокоиться о кернинге, все, что мне нужно сделать, это убедиться, что каждый глиф центрирован по горизонтали и вертикали в пределах своего "пространства"
Это не настоящий код, но я переписал его так, чтобы было легче понять, чего я пытаюсь достичь.
CGFontRef myFontRef = CGFontCreateWithDataProvider(myFontDataProvider);
CGContextSetFont(thisContext, myFontRef);
CGFloat fontSize = 1.0; //will be changeable later
CGContextSetFontSize(thisContext, fontSize);
CGRect charBounds = CGRectMake(x, y, widthPerChar, heightPerChar);
//paint charBounds with background colour
CGFloat textX = x + 2;
CGFloat textY = y + 5;
CGContextShowGlyphsAtPoint(thisContext, textX, textY, (CGGlyph *)displayedString, 1);
Если бы мне удалось вычислить ширину отображаемого глифа, было бы легко понять, какими должны быть textX и textY.
Заранее спасибо всем, кто хочет помочь.