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

Reply via email to