标签: core-text

垂直对齐核心文本?

澄清事物的图像

如何更改CTFramesetter框架中文本的垂直对齐方式?我希望我的文字在中间,而不是在顶部.我正在使用Core Text框架.该段落的设置可以更改水平对齐但不是垂直对齐.

alignment core-text

8
推荐指数
2
解决办法
5906
查看次数

用核心图形绘制文本

我需要将居中文本绘制到CGContext.

我开始使用Cocoa方法.我用文本创建了一个NSCell并尝试绘制它:

NSGraphicsContext* newCtx = [NSGraphicsContext
     graphicsContextWithGraphicsPort:bitmapContext flipped:true];
[NSGraphicsContext saveGraphicsState];
[NSGraphicsContext setCurrentContext:newCtx];
[pCell setFont:font];
[pCell drawWithFrame:rect inView:nil];
[NSGraphicsContext restoreGraphicsState];
Run Code Online (Sandbox Code Playgroud)

但是CGBitmapContext似乎没有在其上呈现文本.可能是因为我必须为inView:参数传递nil.

所以我尝试将文本渲染切换到Core Graphics:

最简单的方法似乎是使用CGContextSelectFont来使用其postscript名称和点大小来选择字体,但CGContextShowTextAtPoint只接受非unicode字符,并且没有明显的方法将文本拟合到矩形:或计算范围一行文本来手动布局矩形.

然后,有一个可以创建的CGFont,并设置cia CGContextSetFont.绘制此文本需要CGContextShowGlyphsAtPoint,但CGContext似乎缺少计算生成文本的边界矩形或将文本换行到rect的函数.另外,如何将字符串转换为CGGlyphs数组并不明显.

下一个选项是尝试使用CoreText来呈现字符串.但Core Text类非常复杂,虽然有一些示例显示如何以指定的字体,在rect中显示文本,但没有示例演示如何计算CoreText字符串的边界矩形.

所以:

  • 给定CGFont CGContext如何计算某些文本的边界矩形,以及如何将文本字符串转换为CGGlyphs数组?
  • 给定一个字符串,一个CGContext和一个postscript名称和点大小,我需要创建什么Core Text对象来计算字符串的边界矩形,和/或在CGContext上绘制包裹到rect的字符串.
  • 给定一个字符串和NSFont - 如何将字符串呈现到CGBitmapContext?我已经知道如何获得它的范围.

cocoa core-graphics core-text

8
推荐指数
2
解决办法
1万
查看次数

如何更改核心文本中的字母间距/跟踪?

这可能也会被问为"kCTKernAttributeName是用词不当吗?"

我需要更改iOS中某些文字的字母间距/跟踪.(我使用的字体在小尺寸上有点过于紧张.)有一些核心图形例程会改变字符间距,但这些例程不能处理Unicode.还有其他核心图形例程,这些例程是根据字形定义的,但这些例程似乎是一个受伤的世界,除此之外,还没有恢复到我的字体中不存在的字形的系统字体的安全网.

所以核心文本似乎是这样做的方式,核心文本支持CFAttributedString上的kCTKernAttributeName.我认为这会做我想要的,虽然这实际上不是字距调整,因为字距调整通常是一个字符对属性,而且(似乎来自文档)只是对所有字形的字形前进进行统一调整,即,跟踪.

如果有人知道在我转向核心文本API的相当痛苦的道路之前......

macos cocoa cocoa-touch core-text ios

8
推荐指数
1
解决办法
2704
查看次数

为什么使用CoreText绘图与UILabel不同?

我正在使用TTTAttributedLabel(使用CoreText)而不是UILabel来加粗某些部分.它工作得很好,但文字看起来不一样.它看起来像是使用不同的字体.我把它设置为相同的字体(Helvetica),但一个是CTFont,一个是UIFont.为什么他们看起来不一样?

  • 这是UIFontUILabel的:[UIFont systemFontOfSize:15]
  • 这是CTFont针对CoreText的:CTFontCreateWithName((__bridge CFStringRef)[UIFont systemFontOfSize:15].fontName, 15, NULL)

UILabel截图:

在此输入图像描述

CoreText屏幕截图:

在此输入图像描述

"散步"中的"p"和"o"是最容易看到字体看起来不一样的部分.CoreText版本中的字母更圆.

objective-c core-text ios

8
推荐指数
2
解决办法
2715
查看次数

使用CoreText显示NSAttributedString

我听说我可以使用CoreText显示NSAttributedString,谁能说我怎么样(最简单的方法)?

请不要使用CATextLayer或OHAttributedLabel回答.

我知道在这个论坛上有很多关于这方面的问题,但我找不到答案

谢谢!!

iphone nsattributedstring core-text ios

8
推荐指数
2
解决办法
6623
查看次数

核心文本 - 字形的高度

我有2个属性字符串说'A'和'.'

我需要计算每个字符串的高度.目前返回的高度对于两者都是相同的,它似乎返回给定字体中最高字符的最大可能高度(即使字符串中不存在该字符).

我想得到每个这些字符的确切像素高度,这样我就可以调整它们周围的视图,使其符合角色(字形).我尝试过使用CTFramesetterSuggestFrameSizeWithConstraints()和CTLineGetTypographicBounds(),但它返回一个类似于属性字符串大小方法的数字.

非常感谢有关如何做到这一点的任何提示!

cocoa core-graphics core-text ios

8
推荐指数
1
解决办法
1563
查看次数

是否可以在NSAttributedString中调整基线?

我想略微修改一个角色的y位置NSAttributedString.我知道我可以使用属性字典下标(或上标):

@{(id)kCTSuperscriptAttributeName: @(-1)}
Run Code Online (Sandbox Code Playgroud)

不幸的是,由此引起的转变在我的情况下太大了.我正在寻找一个以1点为单位调整基线的选项.

属性字符串将显示在UIButton使用中-setAttributedTitle:forState:.

cocoa-touch nsattributedstring core-text ios ios6

8
推荐指数
1
解决办法
5362
查看次数

IOS:取消注册CoreText注册的字体

我在运行时加载ttf字体并使用CoreText注册它们.稍后,当字体更新时,我从CoreText取消注册字体,从服务器下载最新版本并再次使用CoreText注册字体.

这几乎可以工作,但看起来字体是缓存的,直到我的应用程序终止并重新启动才更新.

取消注册字体并从任何缓存中删除它的正确方法是什么?

我使用此代码取消注册字体:

NSURL *url = /* My url to the font */;
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef) url);
CGFontRef newFont = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
CFErrorRef error = nil;
CTFontManagerUnregisterGraphicsFont(newFont, &error);

CGFontRelease(newFont);

if (error) {
    NSLog(@"Error unregistering font: %@", error);
}

return newFontName;
Run Code Online (Sandbox Code Playgroud)

我觉得有一件事是错的,但不知道如何解决,我是如何得到的CGFontRef.是否CGFontCreateWithDataProvider每次都创建新的引用,或者CGFontRef如果它已存在,我是否已获得已注册的引用?有没有更好的方法来获得CGFontRef已经注册的字体?

我只使用字体来创建动态UIImage实例,所以我认为没有任何标签或其他UI元素保持对字体的引用.

谢谢你的帮助!

objective-c core-text ios

8
推荐指数
1
解决办法
508
查看次数

NSAttributedString带有图像附件和NSTextTab,文本未对齐

我正试图在左边有一个带有图像和标题的UIlabel,在右边有一个带有项目符号的描述列表,为此我正在使用NSAttributedString,如下所示:

        NSMutableParagraphStyle *pStyle = [[NSMutableParagraphStyle alloc] init];
    pStyle.tabStops =
        @[ [[NSTextTab alloc] initWithTextAlignment:NSTextAlignmentLeft location:tabLocation options:[NSDictionary dictionary]] ];

    NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] init];
    NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init];
    textAttachment.image = [UIImage imageNamed:@"test_image"];
    textAttachment.bounds = CGRectMake(0, -3, 15, 15);//resize the image
    attString = [NSAttributedString attributedStringWithAttachment:textAttachment].mutableCopy;
    [attString appendAttributedString:[[NSAttributedString alloc]
                                          initWithString:[NSString stringWithFormat:@"title\t\u2022 %@",
                                                                                    [@[ @"description1", @"description2" ]
                                                                                        componentsJoinedByString:@"\n\t\u2022 "]]
                                              attributes:@{NSParagraphStyleAttributeName : pStyle}]];
    label.attributedText = attString;
Run Code Online (Sandbox Code Playgroud)

我希望右边的列表保持对齐但事实并非如此,这是我得到的结果:

在此输入图像描述

我期望列表是这样对齐的: 在此输入图像描述

nstextattachment core-text ios nstexttab nsparagraphstyle

8
推荐指数
1
解决办法
2037
查看次数

CoreText与多列图像?

我想设计如下:

图片

我正在使用core text绘制一个multicolumn,我可以显示它,这不是问题,需要将图像显示为静态图像,前三列需要显示,第四列将通过滚动显示水平.

1.需要添加超级​​链接到视频网址.

2.需要像上面这样的设计..

示例尝试了两种方式: https ://github.com/karthisiva/CoreTextWithImage

内容将是html文本.

ipad core-text ios swift

8
推荐指数
0
解决办法
228
查看次数