some questions about runs, glyphs, chars, bytes, clusters
- From: august <august alien mur at>
- To: gtk-i18n-list gnome org
- Subject: some questions about runs, glyphs, chars, bytes, clusters
- Date: Mon, 12 Jul 2010 23:06:47 +0200
Hi,
I am making some tests to try and learn more about Pango. Right now
I am trying to step through a layout line by line, run by run, and
then word by word.
I was hoping someone might be able to help me out with some
questions.
Here is what I am doing.
static char * text = { " flower power "};
// I get the layout
PangoLayout *layout;
layout = pango_layout_new(pango_context);
pango_layout_set_text(layout, text, -1);
pango_layout_context_changed(layout);
// I then get iterators for lines and stuff
PangoLayoutIter* p_iter = 0;
p_iter = pango_layout_get_iter(layout);
PangoLayoutLine* p_line = pango_layout_iter_get_line(p_iter);
GSList* current_run = p_line->runs;
PangoLayoutRun* p_run=(PangoLayoutRun*)current_run->data;
// I then try to get attribute info for this run
PangoLogAttr * logattrs = (PangoLogAttr *) malloc(
(p_run->item->num_chars +1 ) * sizeof(PangoLogAttr) );
pango_break(text+ p_run->item->offset, p_run->item->length,
&p_run->item->analysis, logattrs,
p_run->item->num_chars+1);
// Am I doing this wrong?
// This then gives me a PangoLogAttr for every byte char in the text
// string, correct? But, since there could be more than one char for
// a glyph, where do I check for word_end?
// Can someone tell me here what num_chars refers to in the item?
// is that character bytes?
// is that not always the same as item->length?
// Also, what is the difference between a byte, a character, a glyph,
// and a cluster in Pango? In the docs and naming of variables, is
// it consistently named?
// Then, I try to step through the run by glyph and logattr to see
// where words start and end
// Is this correct?
for(int i=0;i<p_run->glyphs->num_glyphs;i++) {
j=p_run->glyphs->log_clusters[i];
// I print out some info about the word start and end
printf("\t\tword_start:%d, ", logattrs[j].is_word_start);
printf("word_end:%d \n", logattrs[j].is_word_end);
}
The funny thing that I notice heres is that the "f" and the "l" in
"flower" is considered one glyph. Is that right?
Sorry if my questions are basic. I can see how complex type layout
is now that I am getting my hands dirty. Any help would be greatly
appreciated.
thank you -august.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]