chickadee » gl-type

Outdated egg!

This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for the CHICKEN 5 version of this egg, if it exists.

If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.

gl-type

Simple Freetype font rendering in OpenGL with a single vertex buffer and texture.

Only horizontal, left-to-right rendering is currently supported.

Requirements

Documentation

(load-face PATH SIZE [char-set: CHAR-SET] [mode: MODE])procedure

Load the font face given by the Freetype-openable file pointed to by PATH with a size of SIZE pixels. CHAR-SET is the SRFI 14 character-set that should be loaded, defaulting to char-set:graphic. Any non-graphical characters in the set will waste space. MODE is the mode in which the font should be rendered and should be one of #:normal (the default) – for normally hinted, anti-aliased rendering – or #:mono – for monochrome (aliased) rendering. Returns a face record.

facerecord
face? FACEprocedure
face-atlas FACEprocedure
face-char-set FACEprocedure
face-height FACEprocedure

The record type returned by load-face.

(string-mesh STRING FACE [line-spacing: SPACING] [max-width: MAX-WIDTH] [x: X] [y: Y] [mesh: MESH])procedure

Render the given STRING into a gl-utils mesh with the provided FACE. SPACING is multiplied by the standard line advancement – a smaller spacing results in less space between successive lines – defaults to 1.3. If MAX-WIDTH is provided, the string will be word-wrapped such that it does not exceed the given width. X and Y may be given to provide an offset to the rendered string’s origin. MESH may be supplied in order to reuse a mesh previously created with string-mesh. When MESH is supplied, the number of graphical characters (non-whitespace characters in the char-set of FACE) in STRING must be equal to or less than the number of graphical characters in the string used to create MESH.

Strings are rendered with the upper-left corner of the text at the origin, with the dimensions of the mesh set in pixels. The mesh that is created has vertex attributes position – a 2 element #:float – and tex-coord – a 2 element normalized #:ushort, and #:ushort indices.

string-width STRING FACEprocedure

Returns the width, in pixels, of the STRING if it were rendered with FACE. Any non-graphical characters other than #\space will be ignored.

pixel-density-ratioparameter

Used to control the resolution at which fonts are rendered, defaulting to 1: each pixel unit corresponds to one display pixel. For most “Retina” displays a value of 2 should be used: each pixel unit corresponds to two display pixels.

Examples

See the examples directory.

Version history

Version 0.3.0

27 September 2014

Version 0.2.0

23 December 2014

Version 0.1.0

Source repository

Source available on GitHub.

Bug reports and patches welcome! Bugs can be reported via GitHub or to alex.n.charlton at gmail.

Author

Alex Charlton

License

BSD

Contents »