From 9653f20995e021320b7a8bb1a9957f1412728561 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Thu, 18 Sep 2014 21:49:04 +0800 Subject: [PATCH] win: Add "direct-write" option for BrowserWindow. For atom/atom#3540. --- atom/browser/native_window.cc | 9 ++++++++- atom/common/options_switches.cc | 3 +++ atom/common/options_switches.h | 1 + docs/api/browser-window.md | 2 ++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/atom/browser/native_window.cc b/atom/browser/native_window.cc index ba2444fc0889..583958cb24da 100644 --- a/atom/browser/native_window.cc +++ b/atom/browser/native_window.cc @@ -41,6 +41,7 @@ #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/render_widget_host_view.h" +#include "content/public/common/content_switches.h" #include "content/public/common/renderer_preferences.h" #include "content/public/common/user_agent.h" #include "ipc/ipc_message_macros.h" @@ -351,9 +352,15 @@ void NativeWindow::AppendExtraCommandLineSwitches( if (web_preferences_.IsEmpty()) return; + bool b; +#if defined(OS_WIN) + // Check if DirectWrite is disabled. + if (web_preferences_.Get(switches::kDirectWrite, &b) && !b) + command_line->AppendSwitch(::switches::kDisableDirectWrite); +#endif + // This set of options are not availabe in WebPreferences, so we have to pass // them via command line and enable them in renderer procss. - bool b; for (size_t i = 0; i < arraysize(kWebRuntimeFeatures); ++i) { const char* feature = kWebRuntimeFeatures[i]; if (web_preferences_.Get(feature, &b)) diff --git a/atom/common/options_switches.cc b/atom/common/options_switches.cc index 806191750c40..3d37a7d87ea8 100644 --- a/atom/common/options_switches.cc +++ b/atom/common/options_switches.cc @@ -57,6 +57,9 @@ const char kEnableLargerThanScreen[] = "enable-larger-than-screen"; // Forces to use dark theme on Linux. const char kDarkTheme[] = "dark-theme"; +// Enable DirectWrite on Windows. +const char kDirectWrite[] = "direct-write"; + // Web runtime features. const char kExperimentalFeatures[] = "experimental-features"; const char kExperimentalCanvasFeatures[] = "experimental-canvas-features"; diff --git a/atom/common/options_switches.h b/atom/common/options_switches.h index 8bdc3bcdda1f..a9befacbae9d 100644 --- a/atom/common/options_switches.h +++ b/atom/common/options_switches.h @@ -35,6 +35,7 @@ extern const char kZoomFactor[]; extern const char kAutoHideMenuBar[]; extern const char kEnableLargerThanScreen[]; extern const char kDarkTheme[]; +extern const char kDirectWrite[]; extern const char kExperimentalFeatures[]; extern const char kExperimentalCanvasFeatures[]; diff --git a/docs/api/browser-window.md b/docs/api/browser-window.md index ea6d36d9818f..f8928327e5be 100644 --- a/docs/api/browser-window.md +++ b/docs/api/browser-window.md @@ -86,6 +86,8 @@ normal browsers, see [Web Security](web-security.md) for more. * `overlay-scrollbars` Boolean * `overlay-fullscreen-video` Boolean * `shared-worker` Boolean + * `direct-write` Boolean - Whether the DirectWrite font rendering system on + Windows is enabled Creates a new `BrowserWindow` with native properties set by the `options`. Usually you only need to set the `width` and `height`, other properties will