[cairo] Basic cairomm questions

Murray Cumming murrayc at murrayc.com
Mon Aug 11 05:13:55 PDT 2008

On Fri, 2008-08-08 at 12:47 -0700, Carl Worth wrote:
> > - As a graphics library, I realize encodings and Unicode aren't
> >    really a big concern to Cairo, but is there any definitive
> >    approach to this?  Again, using the filename passed to the
> >    PdfSurface constructor, what encoding/codepage is that
> >    expected to be in?  Current runtime?  UTF8?  ISO-8859-1?
> >    [ All our text handling is in Unicode, so I'll need to
> >      address this issue anywhere I'm interfacing with relevant
> >      Cairo code. ]
> This is an excellent question, and not cairomm-specific. You might
> actually want to raise this again in a separate thread with a
> descriptive subject for this issue. (I'm guessing that Owen, with his
> glib experience, might have some comments here.)
> I don't recall what discussions/decisions we might have made on this
> topic in the past, but the functions that accept a string for a filename
> don't appear to have anything specific documented for them. (On Linux,
> it's easy to just say that the string is a byte sequence that will be
> handed to open(2), but we might want a better cross-platform story than
> that---I don't know.)

We are talking about the encoding of the filepath not the encoding of
the file contents, right?

For GTK+, the rule is generally that the filepath is in whatever
encoding the file system should use (it can be different depending on
both the OS and the drive/server, I think). That's why gtkmm uses
std::string for filepath parameters instead of Glib::ustring, to make
that clearer. GtkFileChooser will provide the raw filepath without
converting it to UTF-8.

However, when your UI asks the user to manually enter a filepath
(outside of the GtkFileChooser), or when the UI tries to show a
representation of a path, UTF-8 is generally involved, so there are
functions such as g_filename_to_utf8(), g_filename_from_utf8(). These
hide the actual encoding, which is nice. For instance:

I assume that cairo follows the same logic.

Murray Cumming
murrayc at murrayc.com

More information about the cairo mailing list