UniFEP on the EPOC emulator Top Text input and selection Restrictions


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 DrawText.

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 CEikonEnv::SystemGc().

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 CUnicodeRenderer object.

UniFEPĀ V2 has the following, much more severe restrictions:

  1. Unicode rendering is only done by the DrawText method of CWindowGc. All other graphics contexts (in particular, the CFbsBitGc class used for rendering to bitmaps) do not support Unicode at all.

    Developers can render Unicode to a bitmap by using a CUnicodeRenderer object.

  2. The resources used by BusyMsgL and InfoMsgL (infoprints) do not use Unicode.
  3. Rotated text drawn by DrawVerticalText does not use Unicode.

Otfried Cheong and Enfour, Inc. VersionĀ 2.59, December 31, 2000.

UniFEP on the EPOC emulator Top Text input and selection Restrictions