FontInfo::FontInfo(char*id)
{
this->id = strdup(id);
- this->charid2glyph = 0;
this->seen = 0;
this->num_glyphs = 0;
this->glyphs = 0;
{
if(this->id) {free(this->id);this->id=0;}
this->font = 0;
- if(this->charid2glyph) {
- free(this->charid2glyph);
- this->charid2glyph = 0;
- }
int t;
for(t=0;t<num_glyphs;t++) {
if(glyphs[t]) {
}
int kerning_size = 0;
- for(t=0;t<font->num_glyphs;t++) {
+ for(t=0;t<src->num_glyphs;t++) {
dict_t* d = src->kerning[t];
if(!d) continue;
DICT_ITERATE_ITEMS(d,void*,key,mtf_t*,m) {
font->kerning_size = kerning_size;
font->kerning = (gfxkerning_t*)malloc(sizeof(gfxkerning_t)*kerning_size);
int pos = 0;
- for(t=0;t<font->num_glyphs;t++) {
+ for(t=0;t<src->num_glyphs;t++) {
dict_t* d = src->kerning[t];
if(!d) continue;
DICT_ITERATE_ITEMS(d,void*,key,mtf_t*,m) {
if(m) {
- font->kerning[pos].c1 = t;
- font->kerning[pos].c2 = (int)(ptroff_t)key;
+ font->kerning[pos].c1 = src->glyphs[t]->glyphid;
+ font->kerning[pos].c2 = src->glyphs[(int)(ptroff_t)key]->glyphid;
font->kerning[pos].advance = (int)(ptroff_t)m->first->key;
+ printf("kerning[%d] = (%d,%d,%d)\n", pos,
+ font->kerning[pos].c1,
+ font->kerning[pos].c2,
+ font->kerning[pos].advance);
pos++;
}
}
while(item) {
if(m->type->equals(item->key, key)) {
item->num++;
- if(last) last->next = item->next;
- else m->first = item->next;
- item->next = m->first;
- m->first = item;
+ if(item->num>m->first->num) {
+ if(last) last->next = item->next;
+ else m->first = item->next;
+ item->next = m->first;
+ m->first = item;
+ }
return;
}
last = item;