|
From: | Graham Asher |
Subject: | [ft-devel] supporting coloured bitmaps in FreeType |
Date: | Wed, 15 Aug 2012 15:57:26 +0100 |
User-agent: | Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20111222 Thunderbird/9.0.1 |
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 |
[Prev in Thread] | Current Thread | [Next in Thread] |