diff options
author | Mattias Andrée <maandree@kth.se> | 2023-01-23 21:38:27 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2023-01-23 21:38:27 +0100 |
commit | 5c361bd43e6424efa1ea59111d0cbe95c650e598 (patch) | |
tree | b773c7d930c7ad8da8208e540afebd13cb5274ae | |
parent | Add some tests (diff) | |
download | libglitter-5c361bd43e6424efa1ea59111d0cbe95c650e598.tar.gz libglitter-5c361bd43e6424efa1ea59111d0cbe95c650e598.tar.bz2 libglitter-5c361bd43e6424efa1ea59111d0cbe95c650e598.tar.xz |
Add README
Signed-off-by: Mattias Andrée <maandree@kth.se>
-rw-r--r-- | README | 65 |
1 files changed, 65 insertions, 0 deletions
@@ -0,0 +1,65 @@ +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 need to output's pixel density, + then you apply hinting to the text you want to render using + this information. The next step is to get the output's + subpixel arrangement and scaling factor, then assuming that + the output's subpixel arrangement i subpixel-rendering + compatible and that the native resolution is used, you + multiply the output's DPI:s so that you get the number of + subpixels per inch instead of number of pixels per inch + (some subpixels may have be counted multiple times depending + on the subpixel arrangement) and you create a greyscale + raster of the text for these new DPIs. 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), 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 space, the application can use + libglitter_get_colour_space_conversion_matrix_double(3) + and libglitter_colour_space_convert_rasters_double(3) or + libglitter_get_colour_space_conversion_matrix_float(3) + and libglitter_colour_space_convert_rasters_float(3) to + convert a colour space the application can output in. + It is however out of the scope of libglitter to get the + output's colour space and the conversion matrix to any + other colour space 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) |