From 48c0c6648bc1657da3ac2b565b1efa313275bb60 Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Wed, 12 Oct 2016 12:58:50 +0100 Subject: [PATCH] riched20: Add a helper to find a font in the font table. Signed-off-by: Huw Davies Signed-off-by: Alexandre Julliard --- dlls/riched20/writer.c | 43 +++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/dlls/riched20/writer.c b/dlls/riched20/writer.c index c3359c1d36a..838168e4b1e 100644 --- a/dlls/riched20/writer.c +++ b/dlls/riched20/writer.c @@ -237,6 +237,31 @@ static void add_font_to_fonttbl( ME_OutStream *stream, ME_Style *style ) } } +static BOOL find_font_in_fonttbl( ME_OutStream *stream, CHARFORMAT2W *fmt, unsigned int *idx ) +{ + WCHAR *facename; + int i; + + *idx = 0; + if (fmt->dwMask & CFM_FACE) + facename = fmt->szFaceName; + else + facename = stream->fonttbl[0].szFaceName; + for (i = 0; i < stream->nFontTblLen; i++) + { + if (facename == stream->fonttbl[i].szFaceName + || !lstrcmpW(facename, stream->fonttbl[i].szFaceName)) + if (!(fmt->dwMask & CFM_CHARSET) + || fmt->bCharSet == stream->fonttbl[i].bCharSet) + { + *idx = i; + break; + } + } + + return i < stream->nFontTblLen; +} + static void add_color_to_colortbl( ME_OutStream *stream, COLORREF color ) { int i; @@ -713,21 +738,9 @@ ME_StreamOutRTFCharProps(ME_OutStream *pStream, CHARFORMAT2W *fmt) } /* FIXME: How to emit CFM_WEIGHT? */ - if (fmt->dwMask & CFM_FACE || fmt->dwMask & CFM_CHARSET) { - WCHAR *szFaceName; - - if (fmt->dwMask & CFM_FACE) - szFaceName = fmt->szFaceName; - else - szFaceName = pStream->fonttbl[0].szFaceName; - for (i = 0; i < pStream->nFontTblLen; i++) { - if (szFaceName == pStream->fonttbl[i].szFaceName - || !lstrcmpW(szFaceName, pStream->fonttbl[i].szFaceName)) - if (!(fmt->dwMask & CFM_CHARSET) - || fmt->bCharSet == pStream->fonttbl[i].bCharSet) - break; - } - if (i < pStream->nFontTblLen) + if (fmt->dwMask & CFM_FACE || fmt->dwMask & CFM_CHARSET) + { + if (find_font_in_fonttbl( pStream, fmt, &i )) { if (i != pStream->nDefaultFont) sprintf(props + strlen(props), "\\f%u", i);