我正在使用C++中主要是CoreFoundation的代码库。我不希望将Foundation对象引入尚未使用它们的源文件中。在CFAttributedString中设置删除线属性
我想创建一个CFAttributedString使用NSStrikethroughStyleAttribute,而无需首先创建一个NSAttributedString。我知道他们是免费桥接的,但如果可能的话,我宁愿保持这个源文件不含obj-c。
那么,有没有办法用strikethrough属性创建一个CFAttributedString而不经过Foundation,如果是这样,怎么办?
的字符串使用'CTLineDraw'渲染。经过一些实验后,我确信你是对的。我曾希望能够使用'NSAttributedString'可用的属性来设置'CFAttributedString',认为由于它们是免费桥接,所以应该可以,然后使用'CTLineDraw'进行渲染。不过,我认为AppKit能够利用CoreText渲染不能指向的属性字符串属性。 –
@ChristopherCole:基本上,属性字符串只是一个与任意属性相结合的字符串,属性可以在字符串的不同点上有所不同。 AppKit定义了一组知道如何解释和渲染的属性。 CoreText定义了一个独立的集合。如果你愿意,你可以定义你自己的一组属性,并将它们用于任何你想要的。这实际上是Cocoanetics职位发生的事情;自定义删除线属性被定义,并且自定义绘图例程知道如何找到并解释它。 –
谢谢。我认为我对归因字符串的用途以及如何使用这些属性有了更好的理解。 –