Index: trunk/src/font.c =================================================================== --- trunk/src/font.c (revision 11362) +++ trunk/src/font.c (revision 11363) @@ -379,3 +379,19 @@ return 0; } +int pcb_move_font(pcb_fontkit_t *fk, pcb_font_id_t src, pcb_font_id_t dst) +{ + htip_entry_t *e; + + if ((!fk->hash_inited) || (htip_get(&fk->fonts, src) == NULL)) + return -1; + + if (pcb_del_font(fk, dst) < 0) + return -1; + + e = htip_popentry(&fk->fonts, src); + htip_set(&fk->fonts, dst, e->value); + pcb_event(PCB_EVENT_FONT_CHANGED, "i", src); + pcb_event(PCB_EVENT_FONT_CHANGED, "i", dst); +} + Index: trunk/src/font.h =================================================================== --- trunk/src/font.h (revision 11362) +++ trunk/src/font.h (revision 11363) @@ -83,6 +83,7 @@ void pcb_fontkit_free(pcb_fontkit_t *fk); pcb_font_t *pcb_new_font(pcb_fontkit_t *fk, pcb_font_id_t id, const char *name); int pcb_del_font(pcb_fontkit_t *fk, pcb_font_id_t id); +int pcb_move_font(pcb_fontkit_t *fk, pcb_font_id_t src, pcb_font_id_t dst); /* Reset the fontkit so that only the default font is kept and all extra fonts are purged */ void pcb_fontkit_reset(pcb_fontkit_t *fk);