- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 CoreAnimation 构建一个由多个层组成的 View ,稍后将对其进行动画处理。还有 CATextLayer
将只包含给定大小的给定字体的一个字符。为了使它漂亮,我想设置图层的边界,以便角色整齐地适合。
问题是我必须确定 CGFont
中最大字符的大小,这将是文本层边界计算的基础。
在关于 SO measure size of each character in a string 的这个问题中解释了如何获得每个字符的大小。因此,一种解决方案是遍历字体的字符并找出最大的字符。
但是我找到了CGFontGetFontBBox
函数。 documentation说
Return Value
The bounding box of the font.
Discussion
The font bounding box is the union of all of the bounding boxes for all the glyphs in a >font. The value is specified in glyph space units.
在我看来,这正是我想要的。一个问题仍然是我必须将字形空间单位转换回像素。我用下面的代码尝试了它,但它给出了奇怪的结果:
/* calculate the bounding box of the biggest character in the font with a given
* font size
*/
- (CGSize) boundingBoxForFont:(CGFontRef)aFont withSize:(CGFloat)aSize
{
if (!aFont) {
CFStringRef fontName = CFStringCreateWithCString(NULL, "Helvetica", CFStringGetSystemEncoding());
aFont = CGFontCreateWithFontName(fontName);
CFRelease(fontName);
}
CGRect bbox = CGFontGetFontBBox(aFont);
int units = CGFontGetUnitsPerEm(aFont);
CGFloat maxHeight = ( CGRectGetHeight(bbox) / (CGFloat) units ) * aSize;
CGFloat maxWidth = ( CGRectGetWidth(bbox) / (CGFloat) units ) * aSize;
return CGSizeMake(maxWidth, maxHeight);
}
奇怪的是,CGRect bbox
的宽度大于高度,这对我来说毫无意义,因为字体中的字符通常高度大于宽度,但也许我用错了。
是否有其他方法可以使用此功能?
编辑
会不会是我混淆了字符和字形?会不会是字体包含代表多个字符的宽字形?
最佳答案
是的,我认为您走在正确的轨道上。例如,诸如 ffl 之类的连字算作单个字形,并且很可能比高更宽。此外,破折号 — 应该与大写字母的高度一样宽。
关于objective-c - 测量 CGFont 中最大字符的尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10437567/
我正在查看 DOOM 源代码,我找到了 this行。 void * Z_Malloc (int size, int tag, void *user)
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
我正从 Python 和 Numpy 转向 C++ 和 Eigen。 在 Python 中,我可以使用 .shape 属性获取 Numpy 数组/矩阵的形状(维度),如下所示: import nump
固定嵌入式YouTube视频的宽度并自己照顾自己的高度是否安全? 我有一个应用程序,用户可以将通知发布到公告板上。这些通知主要是文本(带有有限的html标签)和嵌入式图像。我现在要添加对嵌入式YouT
可以轻松创建一个 THREE.BoxGeometry,在创建宽度、高度和深度的三个独立参数时,您必须在其中传递参数。 我想创建任何和所有不带参数的THREE[types](),并在之后设置值。 有没有
我在 HTML 页面上有一个 Canvas : 属性width和height将 Canvas 拉伸(stretch)到某个字段,但不调整其大小。所以 var canvasElement = docu
我在我的 css 中使用 @media all 和 (max-width: 600px) {} 作为响应式菜单,问题是它没有正确显示。 我想让橙色填充绿色空间……当然,还要将绿色空间变成透明的。基本上
(我知道我问了很多关于这个的问题!) 基本上,我正在尝试将一些代码从 Matlab 转换为 C++,我遇到了这个: n = sum(size(blocks)) - len; 现在我计算了 vector
您好,我有一个用于创建产品的表单。用户应该能够选择类别(例如 T 恤),然后 T 恤的所有尺码(例如 S、M、L)都会下拉。用户可以输入每种尺寸的数量。 Javascript 对此不起作用。用户可以选
我正在尝试在页脚中定位和调整我的社交图标链接的大小,但是,这些命令似乎都没有效果,尤其是当我尝试调整它们的大小时。我试过将宽度和高度标记为“!重要”,但这也没有效果。 这是代码的 JSFiddle:h
我目前正在创建一个 HTML5 canvas基于绘图程序。用户可以绘制一张图像或几张图像“页面”,并将其保存到云端以供日后快速检索。这是用于交互式白板的;老师不能总是确定他们计划类(class)使用的
为网站存储图像的最佳方式是什么? 我不应该超过什么尺寸? 现在,我将所有界面文件保存在 png(主要是 Sprite )中,并将常用图像保存在 jpg 中。一些图像大约为 100-150Kb。 保存图
在 fancybox 主页 ( http://fancybox.net/home ) 中,有一个打开尺寸为屏幕 75% 的 iFrame 的示例。 我无法按照网站上的说明通过修改 .js 文件的宽度和
我想做一个仅适用于 iPhone 4 的应用程序,该应用程序使用 iAd AdBannerView。当我添加它时,它的固定大小为 320x50。在更高分辨率下这如何工作? 有人可以解释一下 iPhon
我们有一个 NSString,我们使用 - (NSSize)sizeWithAttributes:(NSDictionary *)attributes 来测量边界框。一切都好。 现在我们使用标准 NS
我想知道 Canvas 的宽度和高度,但我只知道它的 HDC。 我尝试过这段代码: procedure TForm92.Button1Click(Sender: TObject); var hBi
问题是如何使用数学从 START SVG 维度(不带旋转)和 END SVG 维度(带旋转)获取 >开始 SVG 信息。基本上,要从 START SVG 到 END SVG,我需要执行 -115.60
我的问题是,我有一个包含50万行的Oracle表。我设置了sqoop以将其作为 Parquet 文件导入到HDFS。我将--num-partition参数设置为32,得到了32个 Parquet 文件
是否可以更改 WordPress 中当前主题的 YouTube(或其他视频)的默认嵌入尺寸?我搜索了一个插件和一些代码,但似乎找不到。 我的意思是当您将 YouTube 网址粘贴到帖子或页面中时使用的
我有一个组,其中包含一个矩形和顶部的图像。我希望矩形可以调整大小,并且图像应该具有固定大小,除非矩形小于图像的情况。然后图像应该随着矩形缩小。 图像还应该始终居中并有一些填充。 除了图像的缩小尺寸部分
我是一名优秀的程序员,十分优秀!