4Kモニタを購入して、DPIを標準から変更して使ってます。ドットバイドットの場合は問題ないのですが、WindowsではDPIを変更するとまま問題が発生します。Windows8.1~はそれでもよくなった気がするのですが。
Sublimetext3もHgih DPI(高DPIともいう)で使うと、タブの日本語が化けたりと微妙に問題が発生するのですが、なにより問題なのがIMESupport プラグインのインライン展開部分がズレることです。
多分、High DPI対応していないのが問題かなぁと思って、手っ取り早くクイックハックしてみました。本来ならマニフェストファイル等でHigh DPI対応を宣言するのですが、この方法ではうまくいかなかったので、SetProcessDPIAware関数をざっくり呼び出します。推奨された関数ではなさそうなのですが。(ちゃんとVSでプロジェクト作ってやればいいのかもしれないですが)
SetProcessDPIAware function
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms633543%28v=vs.85%29.aspx
以下、手元の環境が64bit版なので、それのDiffです。
index 33574a7..deb40d6 100644
--- a/hook/imesupport_hook.c
+++ b/hook/imesupport_hook.c
@@ -21,6 +21,7 @@ BOOL WINAPI DllMain(HINSTANCE hModuleDLL, DWORD fdwReason, LPVOID lpvReserved)
{
hModule = hModuleDLL;
+ SetProcessDPIAware();
switch (fdwReason) {
case DLL_PROCESS_ATTACH:
break;
コンパイルはMakefileがありましたが、VS2013のコマンドプロンプトからさくっと以下を実行すればDLLが作成されます。
cl /wd4996 /LD /Feimesupport_hook_x64.dll imesupport_hook.c imm32.lib user32.lib
あとは、%appdata%\Roaming\Sublime Text 3\Packages\IMESupport あたりにパッケージが入っていると思われるので該当DLLを置換すればOKでしょう。いったんサインアウトしないと誰かがDLLをつかんでいて置換できないかもしれません。
以下、置き換え後です。
とりあえず、見られる位置になりました。しばらく使ってみたいと思います。