From c072eb7debe80aca352a5dc26bff08a6ecd8baff Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Sat, 13 May 2006 13:56:05 +0000 Subject: Initial support for adding fonts at run-time. Currently we only support loading AFM files, we recognise them by name, and we can't embed fonts in the output (which is also invalid, though accepted by xpdf, in the PDF case). Oh, and there's no documentation. Still, it's a start. [originally from svn r6681] --- psdata.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'psdata.c') diff --git a/psdata.c b/psdata.c index f1d72cd..68ee58c 100644 --- a/psdata.c +++ b/psdata.c @@ -3,6 +3,7 @@ * formats. */ +#include #include "halibut.h" #include "paper.h" @@ -4086,6 +4087,35 @@ static const struct ps_std_font_data { }}, }; +void init_std_fonts(void) { + int i, j; + kern_pair const *kern; + static int done = FALSE; + + if (done) return; + for (i = 0; i < (int)lenof(ps_std_fonts); i++) { + font_info *fi = snew(font_info); + fi->name = ps_std_fonts[i].name; + fi->nglyphs = lenof(ps_std_glyphs) - 1; + fi->glyphs = ps_std_glyphs; + fi->widths = ps_std_fonts[i].widths; + fi->kerns = newtree234(kern_cmp); + for (kern = ps_std_fonts[i].kerns; kern->left != 0xFFFF; kern++) + add234(fi->kerns, (void *)kern); + for (j = 0; j < (int)lenof(fi->bmp); j++) + fi->bmp[j] = 0xFFFF; + for (j = 0; j < fi->nglyphs; j++) { + wchar_t ucs; + ucs = ps_glyph_to_unicode(fi->glyphs[j]); + assert(ucs != 0xFFFF); + fi->bmp[ucs] = j; + } + fi->next = all_fonts; + all_fonts = fi; + } + done = TRUE; +} + const int *ps_std_font_widths(char const *fontname) { int i; -- cgit v1.1