From 234e0615db2c4d7c03bab283c2ea73f8caafca3b Mon Sep 17 00:00:00 2001 From: Don Ho Date: Thu, 20 Aug 2015 02:35:38 +0200 Subject: [PATCH] [RELEASE] Notepad++ 6.8.2 release Use default font if font name loaded from stylers.xml cannot be found in system. --- PowerEditor/src/Parameters.cpp | 12 ++++++++++++ PowerEditor/src/Parameters.h | 1 + .../src/ScitillaComponent/ScintillaEditView.cpp | 13 +++++++++++-- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/PowerEditor/src/Parameters.cpp b/PowerEditor/src/Parameters.cpp index 09716f9a5..92ea9dd4d 100644 --- a/PowerEditor/src/Parameters.cpp +++ b/PowerEditor/src/Parameters.cpp @@ -1511,6 +1511,18 @@ void NppParameters::setFontList(HWND hWnd) ::EnumFontFamiliesEx(hDC, &lf, EnumFontFamExProc, (LPARAM)&_fontlist, 0); } +bool NppParameters::isInFontList(const generic_string fontName2Search) const +{ + if (fontName2Search.empty()) + return false; + + for (size_t i = 0, len = _fontlist.size(); i < len; i++) + { + if (_fontlist[i] == fontName2Search) + return true; + } + return false; +} void NppParameters::getLangKeywordsFromXmlTree() { diff --git a/PowerEditor/src/Parameters.h b/PowerEditor/src/Parameters.h index 282cf51d7..852f27f21 100644 --- a/PowerEditor/src/Parameters.h +++ b/PowerEditor/src/Parameters.h @@ -1366,6 +1366,7 @@ public: void setCurLineHilitingColour(COLORREF colour2Set); void setFontList(HWND hWnd); + bool isInFontList(const generic_string fontName2Search) const; const std::vector& getFontList() const { return _fontlist; } int getNbUserLang() const {return _nbUserLang;} diff --git a/PowerEditor/src/ScitillaComponent/ScintillaEditView.cpp b/PowerEditor/src/ScitillaComponent/ScintillaEditView.cpp index 2263370bf..9afd51545 100644 --- a/PowerEditor/src/ScitillaComponent/ScintillaEditView.cpp +++ b/PowerEditor/src/ScitillaComponent/ScintillaEditView.cpp @@ -428,6 +428,7 @@ LRESULT ScintillaEditView::scintillaNew_Proc(HWND hwnd, UINT Message, WPARAM wPa return _callWindowProc(_scintillaDefaultProc, hwnd, Message, wParam, lParam); } +#define DEFAULT_FONT_NAME "Courier New" void ScintillaEditView::setSpecialStyle(const Style & styleToSet) { @@ -441,8 +442,16 @@ void ScintillaEditView::setSpecialStyle(const Style & styleToSet) if (styleToSet._fontName && lstrcmp(styleToSet._fontName, TEXT("")) != 0) { WcharMbcsConvertor *wmc = WcharMbcsConvertor::getInstance(); - const char * fontNameA = wmc->wchar2char(styleToSet._fontName, CP_UTF8); - execute(SCI_STYLESETFONT, (WPARAM)styleID, (LPARAM)fontNameA); + + if (not _pParameter->isInFontList(styleToSet._fontName)) + { + execute(SCI_STYLESETFONT, (WPARAM)styleID, (LPARAM)DEFAULT_FONT_NAME); + } + else + { + const char * fontNameA = wmc->wchar2char(styleToSet._fontName, CP_UTF8); + execute(SCI_STYLESETFONT, (WPARAM)styleID, (LPARAM)fontNameA); + } } int fontStyle = styleToSet._fontStyle; if (fontStyle != STYLE_NOT_USED)