From 6403162dca0277df82f06779e379e610b42e3b91 Mon Sep 17 00:00:00 2001 From: cxl Date: Fri, 31 Aug 2018 14:03:04 +0000 Subject: [PATCH] Draw: IsSerif support with fontconfig git-svn-id: svn://ultimatepp.org/upp/trunk@12213 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/Draw/FontFc.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/uppsrc/Draw/FontFc.cpp b/uppsrc/Draw/FontFc.cpp index 8e6d12395..a89437b51 100644 --- a/uppsrc/Draw/FontFc.cpp +++ b/uppsrc/Draw/FontFc.cpp @@ -225,7 +225,11 @@ Vector GetAllFacesSys() for(int i = 0; i < __countof(basic_fonts); i++) { FaceInfo& fi = list.Add(); fi.name = basic_fonts[i]; - fi.info = (i == 3) ? Font::SCALEABLE|Font::FIXEDPITCH : Font::SCALEABLE; + fi.info = Font::SCALEABLE; + if(i == Font::SERIF) + fi.info |= Font::SERIFSTYLE; + if(i == Font::MONOSPACE) + fi.info |= Font::FIXEDPITCH; } FcPattern *p = FcPatternCreate(); FcObjectSet *os = FcObjectSetBuild(FC_FAMILY, FC_SPACING, FC_SCALABLE, (void *)0); @@ -245,6 +249,11 @@ Vector GetAllFacesSys() FcBool bv; if(FcPatternGetBool(pt, FC_SCALABLE, 0, &bv) == 0 && bv) fi.info |= Font::SCALEABLE; + String h = ToLower(fi.name); + if(h.Find("serif") >= 0 && h.Find("sans") < 0) + fi.info |= Font::SERIFSTYLE; + if(h.Find("script") >= 0) + fi.info |= Font::SCRIPTSTYLE; } } FcFontSetDestroy(fs);