aboutsummaryrefslogtreecommitdiffstats
path: root/libglitter.7
blob: a446eeb818fbd40680657380e1ed4c08ccbaa79e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
.TH LIBGLITTER 7 LIBGLITTER
.SH NAME
libglitter - Subpixel-rendering library
.SH DESCRIPTION
.B libglitter
is a C library for subpixel-rendered text from an
greyscale-antialiased text image.
.B 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.
.PP
To use
.B libglitter
you first 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).
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
.BR libglitter_split_uint64_raster (3)
or
.BR libglitter_split_uint32_raster (3),
this is when
.B libglitter
is first used in this process; alternatively you create one
raster for each colour channel directly. Then you use
.BR libglitter_compose_double (3),
.BR libglitter_compose_float (3),
.BR libglitter_compose_uint64 (3),
.BR libglitter_compose_uint32 (3),
.BR libglitter_compose_uint16 (3),
or
.BR libglitter_compose_uint8 (3)
to create the subpixel-antialiased image of the text; you may
have to first call
.BR libglitter_reorder_rasters (3)
to put the rasters in the expected order.
.PP
An optional next step is to use lessen the intensity of the
subpixel-antialiasing with
.BR libglitter_desaturate_double (3),
.BR libglitter_desaturate_float (3),
.BR libglitter_per_channel_desaturate_double (3),
or
.BR libglitter_per_channel_desaturate_float (3).
.PP
Then, if the application cannot output directly to the
output's colour model, the application can use
.BR libglitter_get_colour_model_conversion_matrix_double (3)
and
.BR libglitter_colour_model_convert_rasters_double (3)
or
.BR libglitter_get_colour_model_conversion_matrix_float (3)
and
.BR 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
.B libglitter
to get the output's
colour model and the conversion matrix to any other colour
model than sRGB or CIE XYZ.
.PP
The finally step of the rendering process is out of scope for
.BR 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.
.PP
The application may also desire to call
.BR 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.
.PP
.SH SEE ALSO
.BR libfonts (7)