问题标签 [ctfontref]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
256 浏览

objective-c - CTFontCopyName 为 kCTFontSampleTextNameKey 返回 null

我正在尝试获取字体的示例文本。这是我的编码。

它返回 null 作为结果。但是对于kCTFontCopyrightNameKey,kCTFontLicenseURLNameKey等等......它返回正确的值。只有kCTFontSampleTextNameKey它返回null。我可以知道如何获取给定字体的示例文本。

0 投票
1 回答
1173 浏览

iphone - 来自 CTFontRef 的字体名称

我有一个 CTFontRef 变量。

CTFontRef aFontRef;

获取字体大小很容易:

请帮助我检索字体名称。我希望 FontName 类似于MarkerFelt-Wide

但是,当我使用类似的方法时

我得到标记毡宽

干杯罗希特

0 投票
1 回答
4873 浏览

objective-c - Objective-C - CTFont 更改字体样式?

我有一个包含字体样式和 sumbolic 特征的 CTFont。

我想创建一种具有新样式的新字体,该样式继承了第一种字体的符号特征。我怎样才能做到这一点?

新字体在这里为空我不知道我应该将什么传递4thCTFontCreateCopyWithSymbolicTraits.

0 投票
2 回答
1621 浏览

ios - 为 Framesetter 提供正确的行距调整

有几篇文章指出了从 CTFramesetterSuggestFrameSizeWithConstraints 中获得精确高度的困难,在这里,(framesetter post),@Chris DeSalvo 给出了看起来像是最终修复的方法:添加具有正确行距调整的段落样式设置。

DeSalvo 通过从其 lineHeight 中删除 UIFont 的上升器和下降器来获得他的“领先”。我想知道这将如何比较CTFontGetLeading

我使用这样创建的字体:

价值观完全不同:

  • 0.448 CTFontGetLeading
  • 2.360 DeSalvo 的公式:UIFont lineHeight - assender + descender

以下是一些其他 UIFont 值:

  • 21.000 UIFont 的 lineHeight
  • 15.232 UIFont 的上升器(基线的 Y 坐标)
  • -3.408 UIFont 的下降器(从基线的 Y 坐标)
  • 08.368 UIFont 的 xHeight

以下是 Ken Thomases 询问的 CTFont 值:

  • 11.568001 CTFontGetCapHeight
  • 08.368 CTFontGetXHeight
  • -15.216001、-7.696001、38.352001、24.928001 CTFontGetBoundingBox
  • 15.232 CTFontGetAscent
  • 03.408 CTFontGetDescent (参考类说“根据字体参考的点大小和矩阵缩放的缩放字体下降度量”——这显然意味着它是 Y 坐标相对于基线的绝对值?)

我注意到 UIFont 以前有一个专门用于“领先”的属性,但它已被弃用,建议我们lineHeight改用它。所以 UIFont 认为leading 是21和 CTFontRef .448对于相同的字体?有什么不对劲。

三个问题:

  1. “领先”真的是 kCTParagraphStyleSpecifierLineSpacingAdjustment 的意思吗?
  2. 如果是这样,我应该使用哪种方法/公式来获取它?
  3. 如果没有,我应该使用什么来调整行距?
0 投票
1 回答
3444 浏览

iphone - iPhone iOS UIFont 转换为 CTFontRef 导致大小不对齐

我知道 UIFont 和 CTFont 是不同的东西,但我能够让它发挥作用。

我正在尝试生成 PDF 并使用 UIView 作为模板,但是要绘制可编辑的 PDF,我需要让 CTFontRef 在某个帧中呈现自身。下面是我在 PDF 上下文中绘制 UILabel 的方法。该方法使用 UILabel 作为字体名称、字体大小和位置的模板,而 CTFontRef 将字符呈现为 PDF。

该方法有效,但有怪癖。

我注意到下面的代码可能无法在一个大到足以容纳使用 UIFont 编写的文本的框架中呈现。例如,我有一个适合某种字体的 80x21 UILabel。如果我尝试使用 CTFontRef 渲染该字体,我会得到一个空格,除非我将标签的高度增加到 80x30。简单地说,CTFontRef 不会渲染没有水平或垂直剪辑框架的文本。

另外,我注意到有些字体有不同的宽度,所以一个 80x21 的标签适合 UIFont 的 20 个字符可能只适合 CTFontRef 的 15 个字符。我的猜测是这是因为 CTFontRef 不会截断文本,并且根本不会渲染从框架中任一方向伸出的单词。

几个问题: 什么可能导致我的字体大小错位?我需要复制一些其他属性吗?有没有办法让 CTFontRef 截断标签末尾的长词?

更新:

我重构了代码,现在正在使用这种方法来生成功能齐全的 PDF 文本。

0 投票
0 回答
1354 浏览

objective-c - CTFontRef 和 UIFont 的区别

所以我花了几个小时把头撞在墙上,因为我的 CoreText 项目不能正常工作。我发现了这个问题,这很奇怪。我希望这里有人可以帮助我理解为什么相同大小的相同字体的字体特征在 CTFontRef 和 UIFont 之间是不同的。

为了测试,我使用了以下四行:

并收到此输出:

什么???

0 投票
4 回答
12590 浏览

ios - (NSCFType set) - Unrecognized selector in iOS 6

I'm using the great TTTAttributedLabel (https://github.com/mattt/TTTAttributedLabel) which works fine under iOS 5. Under iOS 6 however, I get the error:

Having researched the issue a little, it would appear that the set message is being sent to an object which has been released. Using the debugger, I have po'd 0x200020e0 which appears to be a CTFontRef.

}

This led me straightaway to the code which sets up the TTTAttributedLabel:

as in the example usage here:

https://github.com/mattt/TTTAttributedLabel

That code isn't ARCified so I've added in bridged casts (see above). I've tried retains all over the place but that doesn't seem to solve the issue (which appears to be) that the CTFontRef is getting released too early (I think - other suggestions welcome).

Any ideas on how to solve this and why this only crops up under the iOS 6 simulator? Thanks in advance.

0 投票
1 回答
370 浏览

ios - 由于 CTFontRef 导致的内存泄漏

我正在使用以下详细信息生成 PDF,在仪器中我遇到内存泄漏,任何人都知道为什么仪器指向CTFontRef100 perc 泄漏。?

0 投票
1 回答
1307 浏览

ios - 由于 CTFontRef 导致的内存泄漏

我正在使用下面的代码生成 PDF,但它会导致内存泄漏,有人可以帮忙吗?代码如下。

我在生成时多次调用此函数

PDF,每次这都会导致内存泄漏。

0 投票
1 回答
4730 浏览

objective-c - CoreText - 创建 CTFont 时的性能警告?

创建 CTFont 时收到以下警告。

CoreText 性能说明:客户端请求使用 PostScript 名称的字体,而不是"ArialRoundedMTBold"使用名称"Arial Rounded MT Bold"

是否可以安全地假设,如果我删除从 [UIFont familyNames] 获取的任何字体名称中的所有空格,它将是核心文本的预期字体名称?