概要
私はiPhone用の電卓アプリを開発しており、LaTeXの外観と同じようにUIViewに数式を描画したいと考えています。
そのため、描画用のフォントとして cmr10.ttf (LaTeX デフォルト) を使用しましたが、一部の文字が表示されませんでした。
テストコードと詳細
ここに私のテストコードがあります:
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
const int len = 4;
Byte cstr[len];
cstr[0] = 0x30; // 0
cstr[1] = 0x00; // Capital Gamma
cstr[2] = 0x41; // A
cstr[3] = 0x61; // a
NSString *str = [[NSString alloc] initWithBytes:(const void*)cstr length:len encoding:NSASCIIStringEncoding];
[str drawAtPoint:CGPointMake(10, 0) withFont:[UIFont fontWithName:@"cmr10" size:40]];
}
UIView に「 0ΓAa 」と表示されることを期待していましたが、実際には大文字のガンマなしで「 0Aa 」と表示されました。
CMR10 コード表 (下記参照) によると、0x00 は大文字のガンマを意味します。ただし、ASCII テーブルでは、0x00 は NUL 制御文字を意味します。これが、大文字のガンマ文字が表示されなかった理由である可能性があります。
CMR10のコード表です。アルファベットなどの一般的な文字は、ASCII テーブルと同じコードですが、その他は異なります。
( http://www.tug.org/texlive//devsrc/Master/texmf-dist/doc/latex/base/encguide.pdfの 18 ページから)
質問
そこで知りたいのは、文字コードがASCIIの制御文字と同じ文字の描き方です。
追加情報
- BaKoMa フォント パッケージの cmr10.ttf を使用しました。
- Xcode 4.6.1 および iOS5 以降のデバイス用にこの電卓アプリを開発しています。