名前: uchiyama 日時: 2003-06-15 09:41:23 IPアドレス: 218.229.55.*
>>19412 斎藤さんのサイトの旧掲示板に、Mac OS Xで、文字送りの量と実ボディのBoundingBoxを 取得する方法を書いたのですが、あまりにも古い記事だったのでなくなっていました。 CIDの番号で取得します。コンパイルは、 gcc -o charwidth -ObjC -framework Cocoa charwidth.c のように行います。 ところで、その昔、奥村さんから、BoundingBoxを元に、左右のサイドベアリングの中点間、 または、中点から左右に25/1000emずつひろげたものをTFMの幅につかってみたらという お話があったときに、Ryumin-Lightでそれを試したものがあります。ただし、これでは、 幅を適当にまるめて少ない数にまとめることはしていません。 中点間を幅にしたもの http://macptex.appi.keio.ac.jp/~uchiyama/ktsume6a.gif 中点+25/10000em http://macptex.appi.keio.ac.jp/~uchiyama/ktsume7a.gif (表示フォントはもちろんRyumin-Lightです) #include <Cocoa/Cocoa.h> #include <stdio.h> #define START 15449 #define END 15455 int main(int argc, char *argv[]) { NSFont *fontAttr; NSGlyph glyphbuf; NSSize size; NSRect rect; int i; NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; fontAttr = [NSFont fontWithName : @"HiraKakuPro-W6" size : 10]; for(i=START; i<=END; i++) { glyphbuf = i; size = [fontAttr advancementForGlyph: glyphbuf]; rect = [fontAttr boundingRectForGlyph: glyphbuf]; //printf("%d %f %f\n", i, size.width, NSWidth(rect)); printf("%d %f\n", i, size.width); } }
この書き込みへの返事: