Skip to content
This repository has been archived by the owner on Jul 3, 2023. It is now read-only.
/ libglitter Public archive

[Bascially feature complete] Subpixel-rendering library

License

Notifications You must be signed in to change notification settings

maandree/libglitter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NAME
	libglitter - Subpixel-rendering library

DESCRIPTION
	libglitter is a C library for subpixel-rendered text from an
	greyscale-antialiased text image. libglitter is designed to be
	used in conjunction with other font libraries: it can neither
	rasterise glyphs nor does it know about the montor's subpixel
	layout or rendering configurations.

	To use libglitter you first (optionally) apply hinting to the
	text so that the glyph outlines aligns with the output's
	pixel-grid as closely as possible. The next step is to get
	the output's subpixel arrangement and scaling factor, then
	assuming that the output's subpixel arrangement is subpixel-
	rendering compatible and that its native resolution is used,
	you rasterise the text using greyscale-antialiasing into a
	raster sized according to the output's horizontal and vertical
	subpixel densities (rather than pixel densities as normally
	done with greyscale-antialiasing; some subpixels may have be
	counted multiple times depending on the subpixel arrangement).
	At this point, depending on final result, you may (will
	probably) want to use libglitter_redistribute_energy_double(3)
	or libglitter_redistribute_energy_float(3) to make the text a
	bit blurrier but reduce colour fringing. After this you create
	an uninitialised colour raster for text and the output's pixel
	density, and split it into one raster per colour channel using
	libglitter_split_uint64_raster(3) or libglitter_split_uint32_-
	raster(3), this is when libglitter is first used in this
	process; alternatively you create one raster for each colour
	channel directly. Then you use libglitter_compose_double(3),
	libglitter_compose_float(3), libglitter_compose_uint64(3),
	libglitter_compose_uint32(3), libglitter_compose_uint16(3), or
	libglitter_compose_uint8(3) to create the subpixel-antialiased
	image of the text; you may have to first call libglitter_-
	reorder_rasters(3) to put the rasters in the expected order.

	An optional next step is to use lessen the intensity of the
	subpixel-antialiasing with libglitter_desaturate_double(3),
	libglitter_desaturate_float(3), libglitter_per_channel_-
	desaturate_double(3), or libglitter_per_channel_desaturate_-
	float(3).

	Then, if the application cannot output directly to the
	output's colour model, the application can use
	libglitter_get_colour_model_conversion_matrix_double(3)
	and libglitter_colour_model_convert_rasters_double(3) or
	libglitter_get_colour_model_conversion_matrix_float(3)
	and libglitter_colour_model_convert_rasters_float(3) to
	convert a colour model the application can output in. It is
	however out of the scope of libglitter to get the output's
	colour model and the conversion matrix to any other colour
	model than sRGB or CIE XYZ.

	The finally step of the rendering process is out of scope for
	libglitter, but is to ensure that all floating-point values
	(if floating-point rasters are used) are withing [0, 1] and
	convert the rasters, which only contain ink-on intensities,
	into the desired colour's with the output's transfer function
	applied.

	The application may also desire to call libglitter_enable_-
	acceleration(3) at the beginning of its execution to enable
	any implemented and supported hardware acceleration. This
	may however be an expensive process, and may not be
	desirable for all applications.

SEE ALSO
	libfonts(7)