X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/halibut/blobdiff_plain/c923eb7f496826aa29015bbef4e855ec42a948c7..refs/heads/master:/bk_paper.c diff --git a/bk_paper.c b/bk_paper.c index ae5a246..844962e 100644 --- a/bk_paper.c +++ b/bk_paper.c @@ -49,13 +49,10 @@ * * - title pages * - * - ability to import other Type 1 fonts + * - ability to use Type 1 fonts without AFM files * * we need to parse the font to extract its metrics - * * then we pass the font bodily to both PS and PDF so it can - * be included in the output file * * - character substitution for better typography? - * * fi, fl, ffi, ffl ligatures * * use real ellipsis rather than ... * * a hyphen in a word by itself might prefer to be an en-dash * * (Americans might even want a convenient way to use an @@ -210,7 +207,7 @@ static void paper_cfg_fonts(font_data **fonts, font_list *fontlist, fonts[i] = f; else /* FIXME: proper error */ - error(err_nofont, fpos, wp); + err_nofont(fpos, wp); } } @@ -1106,6 +1103,7 @@ static para_data *make_para_data(int ptype, int paux, int indent, int rmargin, pdata->rect_type = RECT_NONE; pdata->contents_entry = NULL; pdata->justification = JUST; + pdata->extraflags = 0; /* * Choose fonts for this paragraph. @@ -1458,6 +1456,14 @@ static int utoglyph(font_info const *fi, wchar_t u) { return (u < 0 || u > 0xFFFF ? NOGLYPH : fi->bmp[u]); } +void listfonts(void) { + font_info const *fi; + + init_std_fonts(); + for (fi = all_fonts; fi; fi = fi->next) + printf("%s\n", fi->name); +} + static font_data *make_std_font(font_list *fontlist, char const *name) { font_info const *fi; @@ -1709,7 +1715,6 @@ static void wrap_paragraph(para_data *pdata, word *words, for (p = wrapping; p; p = p->next) { line_data *ldata; - word *wd; int len, wid, spaces; ldata = snew(line_data); @@ -1734,7 +1739,6 @@ static void wrap_paragraph(para_data *pdata, word *words, spaces = 0; len = paper_width_list(&ctx, ldata->first, ldata->end, &spaces); wid = (p == wrapping ? w - i1 : w - i2); - wd = ldata->first; ldata->hshortfall = wid - len; ldata->nspaces = spaces; @@ -2209,6 +2213,7 @@ static int render_text(page_data *page, para_data *pdata, line_data *ldata, FONT_CODE); if (style == word_Code || style == word_WeakCode) flags |= RS_NOLIG; + flags |= pdata->extraflags; if (type == word_Normal) { str = text->text; @@ -2482,6 +2487,7 @@ static para_data *code_paragraph(int indent, word *words, paper_conf *conf) pdata->rect_type = RECT_NONE; pdata->contents_entry = NULL; pdata->justification = LEFT; + pdata->extraflags = RS_NOLIG; for (; words; words = words->next) { wchar_t *t, *e, *start; @@ -2612,6 +2618,7 @@ static para_data *rule_paragraph(int indent, paper_conf *conf) pdata->rect_type = RECT_RULE; pdata->contents_entry = NULL; pdata->justification = LEFT; + pdata->extraflags = 0; standard_line_spacing(pdata, conf);