Skip to content

x/image/font: make it easier to measure a string's bounds and draw it in a bounding box #14436

@josharian

Description

@josharian

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    NeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions