Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create subscript characters that's not in Unicode in iOS

I've been trying for a while now to create a NSString with subscripted character without success. Is it even possible to do this in iOS?
I need a way to change characters in a string to subscript or superscript, and I can't use the Unicode for this as Unicode doesn't have all the letters.
My guess could be to use the HTML tags <sub> and <sup> but I haven't find a way to convert said HTML tags to a NSString.

like image 531
Xrieaz Avatar asked Feb 22 '11 15:02

Xrieaz


1 Answers

I wasn't able to get NSSuperscriptAttributeName to work but had success with the following:

UILabel *label = [[UILabel alloc] init];

NSString *string = @"abcdefghi";

NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:string];

NSInteger num1 = 1;
CFNumberRef num2 = CFNumberCreate(NULL, kCFNumberNSIntegerType, &num1);

[attrString addAttribute:(id)kCTSuperscriptAttributeName value:(id)num2 range:NSMakeRange(4,2)];

label.attributedText = attrString;

[attrString release];

This gives you: enter image description here

Assigning the attributed String to a label via label.attributedText is new with 6.0, but the way the attributed string is set-up might work with earlier versions of iOS.

Sending a negative value to kCTSuperscriptAttributeName give you a subscript.

Don't forget to add the CoreText framework.

like image 136
jay492355 Avatar answered Oct 11 '22 16:10

jay492355