سؤال

وهكذا لدي NSFont، وأريد الحصول على الحد الأقصى من أبعاد أية حروف، أي. الملعب وبريد إلكتروني الارتفاع. [الخط maximumAdvancement] يبدو لإرجاع NSSize من {الملعب، 0}، بحيث لا يساعد. إحاطة المستطيل لا يبدو أن العمل سواء، وعلى اقتراح من jwz في مسألة مماثلة من خلق بيزيير مسار، إلحاق الصورة الرمزية والحصول على rectange إحاطة هو إعطائي أيضا العودة {0، 0}. ما يعطي هنا؟

<القوي> UPDATE : في كود أنا باستخدام للحصول على حجم بيزيير هو:

NSBezierPath *bezier = [NSBezierPath bezierPath];
NSGlyph g;
{
    NSTextStorage *ts = [[NSTextStorage alloc] initWithString:@" "];
    [ts setFont:font];
    NSLayoutManager *lm = [[NSLayoutManager alloc] init];
    NSTextContainer *tc = [[NSTextContainer alloc] init];
    [lm addTextContainer:tc];
    [tc release]; // lm retains tc
    [ts addLayoutManager:lm];
    [lm release]; // ts retains lm
    g = [lm glyphAtIndex:0];
    [ts release];
}
NSPoint pt = {0.0f};
[bezier moveToPoint:pt];
[bezier appendBezierPathWithGlyph:g inFont:font];
NSRect bounds = [bezier bounds];
هل كانت مفيدة؟

المحلول

ووالصورة الرمزية للحرف الفضاء ليس لديها أي المسارات الفرعية، وذلك بطبيعة الحال حدوده لها حجم NSZeroSize. حاول -[NSFont boundingRectForFont] بدلا من ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top