=?iso-8859-1?q?Re=3A_Can=27t_print_=CE=A9_in_bold_in_GTK_labels?=
- From: Gus Koppel <gtk spamkiller bytechase cx>
- To: gtk-app-devel-list gnome org
- Subject: Re: Can't print Ω in bold in GTK labels
- Date: Sat, 11 Feb 2006 13:28:28 +0100
Anoop wrote:
I am writing a program that prints the resistance value in bold red
colour. Please see the following snippet:
final_result = g_markup_printf_escaped("<span foreground=\"red\"
weight=\"bold\" size=\"xx-large\"> %s±%.2f </span>",result,tolerance);
gtk_label_set_markup(GTK_LABEL(label_Output),final_result);
where the variable "result" will contain something like 20KΩ and
tolerance will contain something like 0.25%. What I intend, is to print
"20KΩ±0.25%" in bold red.
But the problem is only 20K appears in bold and the remaining is not.
The problem vanishes once i decide to use the word "Ohms" instead of
symbol "Ω". Why is this so? Am I doing something wrong? How can I print
Ω in bold?
Looks like you've been running into character encoding trouble. As you
found out yourself, everything works okay as long as you stick with
standard 7-bit ASCII characters. The trouble starts when non-7-bit
ASCII characters appear.
g_markup_printf_escaped() requires its argument string being encoded in
UTF-8 and not 8 bit ASCII (or ANSI), as you were probably doing. UTF-8
is a special encoding scheme for non-7-bit ASCII characters, supporting
far more than the originally remaining 128 special characters, which are
platform-specific anyway.
While standard characters 0 - 127 are still being represented by single
bytes, single byte values from 128 to 255 don't represent characters any
more (as they do in 8-bit ASCII or ANSI). Instead, byte values between
128 and 255 denote UTF-8 encoded characters, which are made up of 2 to 4
bytes each. This encoding also includes some invalid byte combinations,
which don't represent any valid UTF-8 character. That's apparently what
happened in your string, causing the output to stop at the occurrance of
the first invalid UTF-8 byte sequence.
I think g_locale_to_utf8() is the function you need to use prior to
handing the string to g_markup_printf_escaped(). Alternatively you might
try to enter valid UTF-8 characters manually, perhaps by using an
UTF-8-capable text editor. See:
http://developer.gimp.org/api/2.0/glib/glib-Character-Set-Conversion.html#g-locale-to-utf8
http://developer.gimp.org/api/2.0/glib/glib-Simple-XML-Subset-Parser.html
Besides, to use bold and colored texts in GtkLabels in general,
gtk_label_set_markup() is the only function you need.
g_markup_printf_escaped() is rather XML-specific and basically not
needed for styled GtkLabels, except if you explcitly need the string
escaped (made usable for XML).
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]