我正在使用UILabel(iOS7)中的字体,并且遇到了一些我希望有人可以解释的内容: 字体与字体之间的关系是什么?雕文,上升者和堕落者?
从我阅读的文件中,Ascender是基线上方字体的一部分,Descender是下面的部分(返回为负数)。合并的绝对值应该是字体的最大高度。
例如,Ascender为255,Descender为-64,总高度为319。 但是,字形高度返回为228.4
编辑:这里是字形代码:
CTFontRef ctFont = CTFontCreateWithName((__bridge CFStringRef)(uiFont.fontName), uiFont.pointSize, NULL);
UniChar ch = [msgLabel.text characterAtIndex:0];
CGGlyph glyph;
if (CTFontGetGlyphsForCharacters (ctFont, &ch, &glyph, 1)) {
CGRect bounds = CTFontGetBoundingRectsForGlyphs (ctFont, kCTFontOrientationDefault, &glyph, nil, 1);
float glyphHeight = bounds.size.height;
}
这里是Ascender / Descender代码:
float adHeight = myLabel.font.ascender-myLabel.font.descender; //Descender is always a negative value
那么为什么从CTFontGetBoundingRectsForGlyphs返回的Glyph高度不等于Ascender加上Descender?
答案 0 :(得分:1)
字体中的每个字形(字母形状)都是不同的大小和形状,对吧?字符'A'的字形高于字符'a'的字形,'t'字形的顶部再次不同。
Font.ascender是所有字母形状(字形)的最大值,Font.descender是最小值。
任何特定的字体都可能容易产生一个额外的高字形,这意味着Font.ascender值与不包含该字符的字符串的尺寸无关。