1

文字列の各グリフのサイズをピクセル単位で取得するにはどうすればよいですか? CGFontGetGlyphBBoxes を使用して、文字列内の各グリフのバウンディング ボックスを取得し、次の値を取得します。

2011-04-18 15:34:56.809 TextSize[3604:207] bbox['d'] = {{56, -38}, {949, 1512}}
2011-04-18 15:34:56.811 TextSize[3604:207] bbox['e'] = {{72, -38}, {978, 1135}}
2011-04-18 15:34:56.811 TextSize[3604:207] bbox['m'] = {{132, 0}, {1441, 1095}}
2011-04-18 15:34:56.812 TextSize[3604:207] bbox['o'] = {{59, -39}, {998, 1141}}

これらの値を正しく理解していれば、フォント単位で表示されます。これらの値は正確には何を意味し、どのようにピクセルに変換できますか? CGFontGetGlyphAdvances と CGFontGetGlyphBBoxes によって返される値の違いは何ですか? CGFontGetGlyphAdvances を使用すると、次のようになります。

2011-04-18 15:34:56.809 TextSize[3604:207] advance['d'] = 1139, bbox = {{56, -38}, {949, 1512}}
2011-04-18 15:34:56.811 TextSize[3604:207] advance['e'] = 1139, bbox = {{72, -38}, {978, 1135}}
2011-04-18 15:34:56.811 TextSize[3604:207] advance['m'] = 1706, bbox = {{132, 0}, {1441, 1095}}
2011-04-18 15:34:56.812 TextSize[3604:207] advance['o'] = 1139, bbox = {{59, -39}, {998, 1141}}

たとえば、文字列全体の幅 (私の場合は「デモ」) を計算したい場合、どの値 (bbox.size.width または Advance) を使用する必要がありますか?

4

1 に答える 1