Hi to all FreeTypers after a long silence on my part - too much to do in
CartoType.
I have a simple proposal that would enable FreeType to support fonts
which can create coloured glyphs. It is primarily intended for bitmap
font formats used for emojis, emoticons and the like.
I have an immediate need for this for a client, and will have to use it
whether or not it becomes part of official FreeType, but it seems like a
simple and non-disruptive change that would add a small amount of value.
The idea is to add just two modes (for the moment - no need to be
over-elaborate) to FT_Pixel_Mode, for premultiplied ARGB, and the same
format using 8-bit indexes into a palette. These modes are convenient
when creating bitmap fonts from PNG images. Thus FT_Pixel_Mode and its
associated documentation comment become:
/*************************************************************************/
/* */
/*
<Enum> */
/*
FT_Pixel_Mode */
/* */
/*
<Description> */
/* An enumeration type used to describe the format of pixels in
a */
/* given bitmap. Note that additional formats may be added in
the */
/*
future. */
/* */
/*
<Values> */
/* FT_PIXEL_MODE_NONE
:: */
/* Value~0 is
reserved. */
/* */
/* FT_PIXEL_MODE_MONO
:: */
/* A monochrome bitmap, using 1~bit per pixel. Note that
pixels */
/* are stored in most-significant order (MSB), which means
that */
/* the left-most pixel in a byte has value
128. */
/* */
/* FT_PIXEL_MODE_GRAY
:: */
/* An 8-bit bitmap, generally used to represent anti-aliased
glyph */
/* images. Each pixel is stored in one byte. Note that the
number */
/* of `gray' levels is stored in the `num_grays' field of
the */
/* @FT_Bitmap structure (it generally is
256). */
/* */
/* FT_PIXEL_MODE_GRAY2
:: */
/* A 2-bit per pixel bitmap, used to represent
embedded */
/* anti-aliased bitmaps in font files according to the
OpenType */
/* specification. We haven't found a single font using
this */
/* format,
however. */
/* */
/* FT_PIXEL_MODE_GRAY4
:: */
/* A 4-bit per pixel bitmap, representing embedded
anti-aliased */
/* bitmaps in font files according to the OpenType
specification. */
/* We haven't found a single font using this format,
however. */
/* */
/* FT_PIXEL_MODE_LCD
:: */
/* An 8-bit bitmap, representing RGB or BGR decimated glyph
images */
/* used for display on LCD displays; the bitmap is three
times */
/* wider than the original glyph image. See
also */
/*
@FT_RENDER_MODE_LCD. */
/* */
/* FT_PIXEL_MODE_LCD_V
:: */
/* An 8-bit bitmap, representing RGB or BGR decimated glyph
images */
/* used for display on rotated LCD displays; the bitmap is
three */
/* times taller than the original glyph image. See
also */
/*
@FT_RENDER_MODE_LCD_V. */
/* */
* /* FT_PIXEL_MODE_ARGB_PRE
:: */
/* A 32-bit bitmap containing premultiplied ARGB
pixels. */
/* */
/* FT_PIXEL_MODE_ARGB_PRE_PALETTE
:: */
/* An 8-bit bitmap containing palette indexes. Each
value */
/* is an index to a palette of premultiplied ARGB color
values. */
/* The palette field of the FT_Bitmap structure points to
the */
/* base of the palette, which is an array of 4-byte
values. */
**
/* */*
typedef enum FT_Pixel_Mode_
{
FT_PIXEL_MODE_NONE = 0,
FT_PIXEL_MODE_MONO,
FT_PIXEL_MODE_GRAY,
FT_PIXEL_MODE_GRAY2,
FT_PIXEL_MODE_GRAY4,
FT_PIXEL_MODE_LCD,
FT_PIXEL_MODE_LCD_V,
* FT_PIXEL_MODE_ARGB_PRE,
FT_PIXEL_MODE_ARGB_PRE_PALETTE,
* FT_PIXEL_MODE_MAX /* do not remove */
} FT_Pixel_Mode;
Best regards,
Graham Asher
_______________________________________________
Freetype-devel mailing list
Freetype-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/freetype-devel