Text is rendered using the
DrawText method of a graphics context. Its argument is a
TDesC8, a string of bytes. A single Unicode character can take between one and three bytes in UTF-8 encoding, and UniFEP rendering expects that characters are not split across several calls to
Unfortunately, the EPOC rich text component does not fulfill this assumption, and so UniFEP implements a layer of protection on the Eikon level. This protection is only applied to a graphics context for the screen device in the Eikon environment (a graphic context created from
CEikonEnv::Screen()). In particular, the protection is available for
Protection is not applied to other graphics contexts, in particular not to any graphics context for rendering to a bitmap. Developers can create a protection layer explicitely using a
UniFEP V2 has the following, much more severe restrictions:
CWindowGc. All other graphics contexts (in particular, the
CFbsBitGcclass used for rendering to bitmaps) do not support Unicode at all.
Developers can render Unicode to a bitmap by using a
InfoMsgL(infoprints) do not use Unicode.
DrawVerticalTextdoes not use Unicode.