題 如何在使用高DPI時修復IntelliJ IDEA中的字體抗鋸齒?


我使用更高的DPI設置,這使得IntelliJ(實際上是Android Studio)具有 真的搞砸了字體

我用 MacType 這使我的字體在其他地方漂亮地呈現,但我猜Java VM以某種方式攔截它或其他東西,這讓我感到害怕。


UPDATE: 正如rpgmaker所說的那​​樣 回答 下面,您還可以安裝最新的IntelliJ(2016.1起)


75
2017-07-03 09:58


起源




答案:


我正在使用高dpi顯示器,並且我使用了完美的字體渲染,為此,您需要:

  • (在Linux上)安裝和使用 Oracle JDK (我正在使用1.7)而不是 OpenJDK的 (同樣用fontfix打補丁對我來說沒用)。 看看如何做到這一點

  • 編輯 .vmoptions 您在中找到的配置文件 箱子 安裝文件夾(例如 studio.vmoptions 對於64位 studio64.vmoptions, 要么 WebStorm.exe.vmoptions 等等,根據您安裝的IDE的版本)添加以下行:
    -Dawt.useSystemAAFontSettings=on
    -Dswing.aatext=true
    -Dsun.java2d.xrender=true

  • 從您要使用的字體中刪除提示信息,然後選擇新字體 IntelliJ IDEA 首選項(設置 - >編輯器 - >字體);
    如果您不知道如何操作,請安裝 FontForge 然後:

    1. 打開你的字體 FontForge
    2. 選擇所有字形 Ctrl+A 並清除所有提示(提示 - >清除提示)
    3. 再次選擇字形並使用提示 - >清除指令
    4. 保存具有不同名稱的字體(文件 - >生成字體)
    5. 安裝新字體,選擇它 理念

如果您按照上面的提示進行操作,並且在快速滾動代碼時遇到滯後(有時可能會在沒有優化的gpu驅動程序的Linux發行版上發生),請嘗試刪除該行
-Dsun.java2d.xrender=true 
來自 .vmoptions 文件。

最後,這是結果的屏幕截圖:

IDE screenshot


(這裡使用的字體是 LucidaMAC 對於主IDE和 Ubuntu Mono 刪除代碼編輯器的提示信息)


107
2017-07-24 13:09



真棒!在Windows中工作:))謝謝:* - Bloke
我已經在我的Windows機器上嘗試了上面的hi dpi(3200x1800)我調整了studio.vmoptions如上所述,但一切仍然模糊。如果可能,請告知我真的想讓這個工作嗎? - Pace
@Pace要刪除模糊字體,您需要禁用該應用程序的顯示縮放(右鍵單擊其圖標,選擇 Properties, 去 Compatibility 選項卡和檢查 Disable DPI scaling on high DPI settings,對於Win8中的x64應用程序 - 您應該編輯相關註冊表項的標誌:打開Regedit.exe,轉到 HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 並添加一個字符串值 REG_SZ 其名稱是應用程序可執行文件的完整路徑,其值為 HIGHDPIAWARE);) - guari
無法清除字體偽造中字體的提示和說明...當我嘗試保存它們之後有錯誤...我做錯了什麼 - Mario Zderic
哇。一年後仍然有用。 JetBrains需要將其設為默認值或至少執行一些自動檢測。沒有這些設置的模糊性使IntelliJ看起來很糟糕且無法使用。 - Andrew T Finnell


我寫了一些手冊如何解決這個問題。

   wget http://urshulyak.com/jdk-8u5-tuxjdk-b08.tar.gz
   tar -zxvf jdk-8u5-tuxjdk-b08.tar.gz
   sudo mv jdk-8u5-tuxjdk-b08 /usr/lib/jvm
   rm jdk-8u5-tuxjdk-b08.tar.gz

腳本啟動Intellij Idea

*只需注意需要更改IDEA_HOME位置以獲取您的想法

#!/bin/sh

IDEA_HOME=/opt/idea
export JAVA_HOME=/usr/lib/jvm/jdk-8u5-tuxjdk-b08/
export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=lcd \
                      -Dsun.java2d.xrender=true"
export GNOME_DESKTOP_SESSION_ID=this-is-deprecated
exec $IDEA_HOME/bin/idea.sh "$@"

更多字體的更多信息和截圖: http://urshulyak.com/?p=478


4
2017-09-07 20:25



添加 -Dsun.java2d.xrender=true 至 bin/webstorm64.vmoptions 在WebStorm的目錄中對我來說足夠了。 - Alicia
下載鏈接已損壞。請修理 - jackode
這個答案假設是64位架構,可能並非如此 - Anwar


我只是通過下載來獲得類似的外觀 門洛字體 並在外觀和行為>外觀中將編輯器消除鋸齒設置為“灰度”

這是結果:

This is how it looks

這是兩個平台之間的比較

enter image description here

我使用更高分辨率和更好的硬件與MAC工作,這就是為什麼字體看起來更亮,結果將根據您的機器而有所不同。無論如何它值得一試,變化很容易恢復


2
2018-03-30 07:52



部分為我工作!字體不像通用Mac UI那樣清晰,但足夠清晰可行。我在13“Mac Pro,OS X 10.11.4上 - Mayank Jain
你為什麼要在OSX上做這個?,你應該開箱即用得到正確的字體:) - FRR


在較新的JetBrains IDE上,解決方案是不同的。

在IDE中 安裝文件夾 只是 改名  jre 文件夾到別的東西。例如:

  1. $ cd your-path-to/WebStorm-162.2228.20/
  2. $ mv jre/ _jre/

較新的版本使用捆綁的JRE而不是您的系統1和此 捆綁版本會導致字體渲染問題

在這里工作正常:WebStorm 2016.3.2在Kubuntu 16.04 linux上。

WebStorm screenshot with fixed font


2
2017-11-05 23:05



這是埋在底部,但這是真正的罪魁禍首。上面的每個人都專注於編輯器字體,但我已經有了很好的編輯器字體。我的問題是各種標註,工具提示和模態對話都顯示出糟糕的字體渲染而沒有抗鋸齒。我嘗試了上面的所有內容,但沒有一個解決了這個問題,但是隱藏打包的jre就行了。 - Dan


這些醜陋的東西都不再需要了。從Linux下載最新的IntelliJ(2016.1以後版本)。它包括一個修改過的JRE,修復了字體問題。要修復Android Studio,請創建一個指向IntelliJ jre的符號鏈接:

ln -s /PATH/TO/INTELLIJ/jre /PATH/TO/ANDROIDSTUDIO/jre

或者,只需以root身份打開文件管理器(假設您的IDE安裝在/ opt目錄或其他系統文件夾中)並創建IntelliJ jre的快捷方式並將其移至Android Studio安裝文件夾,然後將其重命名為“jre”。這適用於最新的android studio 2.0,但它也適用於早期版本。


1
2018-04-15 19:56



你的意思是哪個版本?當我去幫助>關於,我明白了 Intellij IDEA 15.0.2 和 Build #IU-143.1184 - Bloke
@Bloke只是去網站下載最新的IntelliJ。我認為現在是2016.1.1。他們現在改變了他們宣傳新版本的方式,現在有了YEAR.REVISION.UPDATE#格式。 - Aspiring Dev
哦,的確如此。我剛嘗試過。我的 Source Code Pro 但是,字體現在看起來有點過於大膽,但這是一個小問題。謝謝! - Bloke
使用與IntelliJ一起打包的JRE對我來說完全不同。我最初沒有使用JRE下載了IntelliJ,並使用了我的本地Oracle JDK(1.7),這導致了錯誤的字體。 HTH。 - sengs


如果您無法清除提示 FontForge 像瓜裡在他的解釋 回答。使用 Cousine (Apache License v2.00)作為編輯器字體並將大小設置為14.我嘗試了一些其他等寬字體。然而, Cousine 似乎有比其他大多數字體更好的渲染。請參見最後的屏幕截圖

  1. 下載字體: cd ~/Downloads/ && wget www.fontsquirrel.com/fonts/download/cousine
  2. 創建一個新的字體系列目錄: sudo mkdir /usr/share/fonts/truetype/Cousine
  3. 提取字體文件: sudo unzip cousine -d /usr/share/fonts/truetype/Cousine/
  4. 使它們可用於IntelliJ: sudo chmod -R 777 /usr/share/fonts/truetype/Cousine
  5. 更新字體緩存: sudo fc-cache -f -v
  6. 重新啟動IntelliJ並選擇 表姐 作為編輯器字體
  7. 別忘了設置像vmoptions一樣 瓜裡解釋道

截圖:


1
2018-03-16 21:29



您的屏幕截圖看起來不像是使用了抗鋸齒。 - Ztyx
將屏幕截圖替換為較小的屏幕截圖以防止縮小比例。現在您可以看到使用了抗鋸齒 - user1185087


在Windows 10中,我遇到了類似的問題。檢查 Disable display scaling on high DPI settings 使字體更平滑但更大。以下是如何執行此操作(來自其他用戶的先前評論):

右鍵單擊其圖標,選擇 Properties, 去 Compatibility 選項卡和檢查 Disable DPI scaling on high DPI settings

進入Windows Settings 並尋找 Display Settings,有一個帶滑塊的對話框 Change the size of text, apps, and other items。我將它從125%移到100%並且不得不註銷並重新登錄。字體現在小而且平滑:

enter image description here

更重要的是,如果我取消選中 Disable display scaling on high DPI settings,它似乎仍然很順利。


1
2017-07-14 16:22



這是唯一對我有用的解決方案!謝謝! - DrKaoliN


接受的答案對我不起作用,但我通過這樣做得到了一切:

在閱讀了各種教程並弄亂了一堆修復後,我發現了一種完美的方法。

首先下載 來自Oracle的JDK 8 並在終端中執行以下行:

cd Downloads
tar -xvf jdk-8u25-linux-x64.tar.gz
rm jdk-8u25-linux-x64.tar.gz
sudo mkdir -p /usr/lib/jvm/
sudo mv jdk1.8.0_25 /usr/lib/jvm/

現在通過執行以下命令下載JDK字體修復程序(由[Urshulyak Yaroslav] [2]提供):

cd ~/Downloads
wget http://urshulyak.com/jdk-8u5-tuxjdk-b08.tar.gz
tar -xvf jdk-8u5-tuxjdk-b08.tar.gz
sudo mv jdk-8u5-tuxjdk-b08 /usr/lib/jvm
rm jdk-8u5-tuxjdk-b08.tar.gz

這將提取下載的zip並將其移動到/ usr / lib / jvm /。現在在終端中運行以下命令:

cd ~
sudo gedit .bashrc

然後將以下行添加到bashrc文件的最底部。

JAVA_HOME=/usr/lib/jvm/jdk1.8.0_25/
export JAVA_HOME

保存它然後gedit idea.sh. (您的腳本位置可能不同)

gedit /home/USER/Downloads/idea/bin/idea.sh

在腳本的最底部用以下兩行替換底部的While Do語句中的行:

eval "/usr/lib/jvm/jdk-8u5-tuxjdk-b08/bin/java" $ALL_JVM_ARGS -Djb.restart.code=88 $MAIN_CLASS_NAME "$@"
test $? -ne 88 && break

保存它然後打開IntelliJ,字體應該工作,你將使用Oracle JDK 8進行開發。您可能需要編輯項目設置並再次設置JDK,但一定要使用實際的JDK而不是字體修復。

此修復程序也適用於CLion,Android Studio和[PyCharm。

這些說明假定JDK版本為1.8.0_25,文件/路徑名稱將在未來版本中更改。


0
2017-12-28 12:35



您是否知道如何使用PhpStorm?文件的底部如下所示:LD_LIBRARY_PATH =“$ IDE_BIN_HOME:$ LD_LIBRARY_PATH”“$ JDK / bin / java”\ $ AGENT \“ - Xbootclasspath / a:$ IDE_HOME / lib / boot.jar”\ -classpath“$ CLASSPATH“\ $ VM_OPTIONS”-Djb.vmOptionsFile = $ VM_OPTIONS_FILES_USED“\” - XX:ErrorFile = $ HOME / java_error_in_WEBIDE_%p.log“\ -Djb.restart.code = 88 -Didea.paths.selector = WebIde90 \ $ IDE_PROPERTIES_PROPERTY \ $ IDE_JVM_ARGS \ $ REQUIRED_JVM_ARGS \ $ MAIN_CLASS_NAME \“$ @”EC = $?測試$ EC -ne 88 &&退出$ EC #test $? -ne 88 && break exec“$ 0”“$ @” - MichaelHindley