This issue applies to github.com/golang/freetype, if that is still under development.
I want to accomplish the following (superficially) easy tasks:
- Given a string and a fully specified font/context, determine the rendered string's bounds, taking into account ascenders, descenders, etc.; something along the lines of
NSString's -sizeWithAttributes: method.
- Given an appropriately sized rect, render a string in that rect, compensating for ascenders, descenders, etc; something like
NSString's -drawInRect:withAttributes: method.
I will use this to render a simple, short string into a texture of just the right size, and then upload that texture onto a window for use as a label at a particular origin.
MeasureString looks close, but it only provides the width, not the height. (And I don't see a way to get the line height / leading from a font.) And DrawString is close, but the dot's y offset is the baseline of the text, which I don't see a handy way to calculate.
The fact that these are top-level APIs in Cocoa suggests that these are common needs and that they cover a large portion of use cases. Maybe this should be handled with examples, or maybe with new fundamental APIs, or maybe with convenience APIs. I don't know enough to say.
/cc @nigeltao
This issue applies to github.com/golang/freetype, if that is still under development.
I want to accomplish the following (superficially) easy tasks:
NSString's-sizeWithAttributes:method.NSString's-drawInRect:withAttributes:method.I will use this to render a simple, short string into a texture of just the right size, and then upload that texture onto a window for use as a label at a particular origin.
MeasureStringlooks close, but it only provides the width, not the height. (And I don't see a way to get the line height / leading from a font.) AndDrawStringis close, but the dot's y offset is the baseline of the text, which I don't see a handy way to calculate.The fact that these are top-level APIs in Cocoa suggests that these are common needs and that they cover a large portion of use cases. Maybe this should be handled with examples, or maybe with new fundamental APIs, or maybe with convenience APIs. I don't know enough to say.
/cc @nigeltao