Index: font.c =================================================================== --- font.c (revision 7647) +++ font.c (revision 7648) @@ -201,7 +201,7 @@ } -pcb_font_t *pcb_font(pcb_board_t *pcb, pcb_font_id_t id, int fallback) +static pcb_font_t *pcb_font_(pcb_board_t *pcb, pcb_font_id_t id, int fallback, int unlink) { if (id <= 0) return &pcb->fontkit.dflt; @@ -208,8 +208,11 @@ if (pcb->fontkit.hash_inited) { pcb_font_t *f = htip_get(&pcb->fontkit.fonts, id); - if (f != NULL) + if (f != NULL) { + if (unlink) + htip_popentry(&pcb->fontkit.fonts, id); return f; + } } if (fallback) @@ -218,6 +221,17 @@ return NULL; } +pcb_font_t *pcb_font(pcb_board_t *pcb, pcb_font_id_t id, int fallback) +{ + return pcb_font_(pcb, id, fallback, 0); +} + +pcb_font_t *pcb_font_unlink(pcb_board_t *pcb, pcb_font_id_t id) +{ + return pcb_font_(pcb, id, 0, 1); +} + + static void hash_setup(pcb_fontkit_t *fk) { if (fk->hash_inited)