[cairo] About cairo_show_text and UTF-8...
spitzak at d2.com
Thu Jan 5 13:22:55 PST 2006
Mike Emmel wrote:
> On 1/5/06, Scott Robert Ladd <graphics at coyotegulch.com> wrote:
>>Mike Emmel wrote:
>>>The system font in cairo does not have those glyphs.
>>>Pango uses a collection of fonts to meet the unicode requirements of a string.
>>Hmmm... perhaps this is something that should be clearer in the
>>documentation or Cairo. I assumed that the default Cairo font would be
>>the same as the default GTK+ font (which does include these glyphs).
>>Why the difference in fonts? If Cairo is the rendering agent for GTK+,
>>should they be using the same default fonts?
> Pango marshals a collection of fonts that will handle all the unicode
> chars in a string. cairo is used to draw pieces of the string with the
> font that provides the unicode glyphs.
> In general no font has all the unicode glyphs so to draw a arbitrary
> unicode string you must either have a library like pango or implement
> it yourself.
However I would argue that Cairo *should* do this. Cairo is supposed to
be supplying an easy-to-use program API. Having to choose the "right"
font depending on what characters are in your string is *not* user
friendly. Nor is full-on Pango user friendly, because the api is too
complex (for necessary reasons. Pango would be used by library text
editing/display widgets but will NEVER be used directly by a program
written by a non-expert.)
Pango's font-collection code should be moved to Cairo/FreeType so that
you can get an entire set of Unicode glyphs trivially (by selecting a
font by name) and so that sending the same "font name" to Pango and to
Cairo will produce the exact same glyphs (these different font names is
currently making people like me *less* likely to use Pango, not more!).
Pango's behavior should be improved by using a back-up 16x16 bitmapped
font of all the assigned Unicode glyphs, so you see something, no matter
what font is chosen. I suspect such a shared backup is more easily
accomplished in Cairo/FreeType than in Pango.
Cairo should then provide a "I will draw all the glyphs in this UTF-8
string next to each other" call. (go ahead and call it "toy" as much as
you want, but this is what *everybody* wants and what 99.5% of the
programs written with Cairo are going to use).
Cairo should also provide the "draw all these glyphs indicies at these
x,y positions" that Pango will call. Since Pango needs "alternative
forms" these should be placed into locations outside the Unicode
0x10ffff range so that Pango can index them, while still only
communicating a single font to Cairo.
PS: programmers choose the "symbol" font so that the ascii code for 'a'
will print an alpha, not because it is some secret incantation so that
the unicode alpha index will work. The current behavior is useless and
is incompatable with Windows. Please fix it.
More information about the cairo