Windows 顯示縮放令程式字體朦點分?DPI 感知、點陣拉伸、每顯示器不同縮放比例、同原生解像度取捨指南
重點摘要
程式字體喺高縮放比例下變朦多數唔係顯示器問題而係舊程式唔識每顯示器點密度系統將畫面點陣拉大之後先顯示所以筆畫邊緣變糊
開咗顯示縮放之後,有啲程式的字體利到不得了,有啲程式的字體卻朦到好似隔住一層霧,同一部顯示器、同一張桌面,點解差咁遠?好多用家第一反應會覺得係顯示器出問題,或者線材有問題。但如果朦只限個別程式,其他程式完全正常,兇手好大機會唔喺顯示器層,而喺 Windows 顯示縮放層:舊程式唔識每部顯示器的點密度,系統只好將佢畫好的點陣圖拉大之後先顯示,筆畫邊緣由一刀切變成漸變過渡,肉眼就覺得朦。本文要講清三樣嘢:點解縮放會令字體朦、點解只限個別程式朦、點樣用七步分清楚縮放層同其他層。先講明分界:成個桌面所有內容一齊朦,指向非原生解像度層,歸第 174 篇;舊遊戲全螢幕的縮放問題,歸第 187 篇;本文只講桌面程式同系統縮放層。
先講縮放的本意:邏輯尺寸同實體像素係兩回事
高解像度顯示器上,像素越嚟越細,如果介面元素按實體像素一比一顯示,文字同按鈕會細到睇唔到。顯示縮放就是為咗解決呢個問題:系統將介面元素放大,令文字同按鈕維持一個睇得舒服的尺寸。關鍵概念係「邏輯尺寸」:程式以為自己畫在一個較細的邏輯畫面,系統再將呢個邏輯畫面映射到實體像素。縮放比例越大,邏輯畫面相對越細,映射到實體像素嗰陣放大倍數越大。
呢個映射過程,決定咗字體利定朦。識縮放的程式,會按目標尺寸重新繪製文字同介面,筆畫用實體像素重新計算,邊緣保持利落。唔識縮放的程式,系統唔會叫佢重新繪製,而係叫佢用細尺寸畫好一幅圖,再將呢幅圖拉大。拉大唔會生出新細節,只會將原有像素攤開,筆畫邊緣就由一刀切變成漸變過渡,肉眼覺得朦。縮放本身無錯,錯配先係問題:程式繪製尺寸同最終顯示尺寸唔一致,中間靠拉伸補救,細節就係喺拉伸嗰一步流失。
機制一:DPI 感知的三種層級,決定邊個程式會朦
點密度感知,簡稱 DPI 感知,講的是程式識唔識得自己身處的縮放環境。定性上可以分三級,寫手唔會寫版本號,因為層級概念先係重點,版本對照會隨時間變。
第一級,完全唔識縮放的程式。呢類程式假設一個固定點密度,畫好之後就交畀系統。系統見到佢唔識縮放,只好代勞:將佢畫好的點陣圖拉大到目標尺寸。呢類程式喺高縮放比例下最容易朦,而且朦的程度跟拉伸倍數有關:拉伸倍數越大,筆畫攤得越開,越朦。
第二級,只識整個系統單一縮放比例的程式。呢類程式識得系統而家用緊邊個縮放比例,會按呢個比例繪製,所以喺單一顯示器、單一縮放比例的環境,佢可以好利。但一搬去另一部縮放比例唔同的顯示器,佢唔會重新繪製,系統繼續用舊尺寸拉伸,結果搬過去之後成個程式都朦,要重新開啟程式先至有機會變返利。呢個「搬過去先朦、重開就好返」的模式,本身就是診斷線索。
第三級,識每部顯示器各自縮放比例的程式。呢類程式知道自己而家喺邊部顯示器、嗰部顯示器用緊邊個縮放比例,搬顯示器嗰陣自己重新繪製,畫面即時變返利。現代新程式多數屬於呢級,舊程式多數屬於前兩級。同一張桌面、同一縮放比例,識縮放的程式利、唔識的程式朦,係預期差異,唔係顯示器偏心。
機制二:點陣拉伸點解朦,非整數倍點解更礙眼
點陣拉伸的朦,可以用一個好直觀的想像理解:原本一條筆畫用幾個像素畫成,邊緣一係黑、一係白,分界清晰。拉大之後,呢條筆畫要佔更多像素,但系統手頭上只有原本幾個像素的資料,唔知道中間應該點填,只好將原有像素攤開、邊緣做漸變過渡。結果筆畫邊緣唔再係一刀切,而係由深到淺漸漸過渡,肉眼就覺得朦、覺得唔實。
非整數倍拉伸更礙眼,原因係原像素同目標像素對唔齊。整數倍拉伸嗰陣,每個原像素可以對應整數個目標像素,攤開得比較均勻;非整數倍拉伸嗰陣,有啲原像素要攤開多啲、有啲攤開少啲,每行筆畫攤開的程度唔一致,筆畫粗幼會出現唔均勻,細字尤其明顯。呢個亦解釋咗點解同一個程式,喺唔同縮放比例下朦的程度可以唔同:唔係程式變咗,而係拉伸對齊情況變咗。
仲有一點要講明:拉伸唔會令字體有更高解像度。縮放放大的是邏輯尺寸,細節上限由程式原本繪製尺寸決定。將一個細尺寸點陣圖拉到幾大都好,細節都唔會多過原本嗰幅圖。呢個係點陣拉伸的根本限制,唔係調高亮度、對比或者換線材可以解決。
機制三:文字同圖示可以唔同命運
同一個程式入面,文字朦同圖示朦可以同時存在,但原因唔同,必須分開諗。文字原則上可以用向量方式重新繪製:識縮放的程式,文字可以按目標尺寸重新計算筆畫,邊緣保持利落。圖示同舊式介面元素,好多本身就是點陣圖,程式手頭上根本無更高解像度的版本可以換,拉大之後一樣朦。結果就係:文字利、圖示朦,呢個組合指向點陣素材本身無高解像度版本;文字同圖示一齊朦,指向成幅點陣被拉伸。兩種組合的跟進方向唔同,診斷嗰陣要分開記錄,唔好一句「成個程式朦」了事。
程式自帶縮放同系統縮放,亦係兩層,唔好撈埋。有啲程式自己有縮放設定,調節的是內容尺寸;系統縮放調節的是成個程式介面的邏輯尺寸。系統縮放朦,調程式內縮放未必醫得到,因為系統點陣拉伸仲喺度。反過來,程式內縮放調得太大,內容本身都會變形,呢個唔係系統縮放層的問題。診斷嗰陣,兩層要分開試:先固定程式內縮放,再試系統縮放對照,唔好兩邊一齊改。
每顯示器不同縮放:搬過去先朦的完整解釋
雙顯示器環境,將每顯示器不同縮放的麻煩放大。假設主顯示器同副顯示器用緊唔同縮放比例,程式由主顯示器拖去副顯示器嗰陣,識每顯示器縮放的程式會即時重新繪製,畫面即時變返利;只識系統單一比例的程式唔會重新繪製,系統繼續用舊尺寸拉伸,結果搬過去之後成個程式都朦。重開程式嗰陣,程式會按新顯示器的縮放比例重新繪製,畫面就變返利。呢個完整過程,解釋咗點解同一個程式、同一日之內,喺主顯示器利、喺副顯示器朦、重開又利返:唔係顯示器時好時壞,而係感知層級同搬移行為的組合。
單一顯示器都會朦,呢點亦要講明。唔識縮放的程式,喺單一高縮放顯示器上一樣朦,唔使雙顯示器先出事。雙顯示器只係令問題更容易暴露,因為搬移嗰一步將感知層級的分別即時呈現出嚟。診斷嗰陣,單顯示器用家唔好因為「我得一部顯示器」就排除縮放層。
下面張表將縮放層同其他層一次講清,診斷嗰陣逐項對。
| 現象 | 朦的範圍 | 搬顯示器表現 | 重開程式表現 | 指向層 |
|---|---|---|---|---|
| 系統縮放點陣拉伸 | 只限個別程式,其他程式利 | 搬去唔同縮放顯示器先朦 | 重開有機會變返利 | DPI 感知層,本文 |
| 非原生解像度拉伸 | 成個桌面所有內容一齊朦 | 搬顯示器都朦 | 重開都朦 | 解像度層,歸第 174 篇 |
| 點陣素材無高解像度版本 | 同一程式文字利、圖示朦 | 搬顯示器圖示依然朦 | 重開圖示依然朦 | 素材層 |
| 舊遊戲全螢幕縮放 | 只限舊遊戲全螢幕嗰陣 | 唔適用桌面搬移 | 遊戲設定層 | 歸第 187 篇 |
| 顯示器本身問題 | 固定位置或者成個畫面異常,換內容都喺度 | 換輸入都喺度 | 重開程式都喺度 | 面板層,唔係縮放層 |
診斷順序:跟足七步,唔好跳步
診斷原則同其他顯示問題一樣:一次只改一個變數,改完記低有變定無變,唔好一次過改晒所有設定。下面七步建議跟足次序做。
第一步,先定範圍:朦係咪只限個別程式,定係成個桌面所有內容都朦。只限個別程式,指向 DPI 感知層,繼續本文的路;成個桌面都朦,指向解像度層,要轉去第 174 篇的方向諗,唔好喺縮放設定入面兜圈。
第二步,原生解像度確認:先確認顯示器行緊原生解像度。未行原生解像度,成幅畫面拉伸,字體朦可能根本唔關縮放事。確認原生解像度之後,先至可以將後面的對照歸因縮放層。
第三步,無縮放對照:暫時將縮放改回無放大再睇同一程式。無縮放就變返利,證實朦同縮放層有關;無縮放都朦,就唔係縮放問題,要返去其他層諗。呢步係全篇最重要的排除步,唔好跳過。
第四步,搬顯示器對照(雙顯示器適用):將程式由一部顯示器拖去另一部縮放比例唔同的顯示器,睇朦唔朦跟唔跟住搬。搬過去先朦、重開程式就好返,指向程式只識系統單一比例;搬過去即時變返利,指向識每顯示器縮放。單顯示器用家可以跳過呢步,但要記低跳過的原因,唔好當成無做。
第五步,程式 DPI 設定對照:用程式內容的相容性 DPI 設定,逐個選項試一次,每次只改一個選項,記低邊個選項令文字變利、邊個令版面走樣。呢步係取捨測試,唔係標準答案:有啲選項令文字利但版面比例走樣,有啲選項令版面正常但文字依然朦,邊個啱要按程式用途去試。
第六步,文字 vs 圖示對照:同一程式入面,文字朦定圖示都朦。文字利、圖示朦,指向點陣素材本身無高解像度版本,系統設定醫唔到;文字同圖示一齊朦,指向成幅點陣被拉伸,回到感知層級諗。兩種組合的結論唔同,唔好混為一談。
第七步,重開/重新登入對照:搬顯示器或者改縮放之後,程式重開、甚至重新登入再睇。重開就好返,指向感知層級問題,唔係顯示器故障;重開都朦,就要諗素材層或者其他層。改縮放比例之後,部分程式要重開先生效,呢個唔係故障,係感知層級的正常行為,唔好因為重開先見效就以為之前做錯。
邊界情況:分開寫,唔好一句帶過
縮放唔會改變實體解像度:放大介面唔等於令文字有更高解像度,細節上限由程式繪製尺寸決定。呢點同「換高解像度顯示器就解決」的誤區直接相關,見下段。
程式更新可以改變感知層級:同一個程式,新版識每顯示器縮放、舊版唔識,行為可以完全唔同。診斷嗰陣要以而家版本行為為準,唔好憑印象話「呢個程式一向都朦」或者「一向都利」。
螢幕截圖未必反映朦的程度:截圖擷取的層級同肉眼見到的合成畫面未必同一層,診斷以肉眼在顯示器上的表現為準,唔好憑一張截圖下定論。送檢嗰陣,口頭描述「邊個程式、邊部顯示器、搬唔搬、重開點」比一張截圖有用。
縮放比例改變之後,部分程式要重開先生效,呢個係正常行為,唔係故障。將呢個正常行為誤讀成「改完設定無用」,會令人不斷改設定、兜圈,浪費時間。
常見誤區:逐一拆解
誤區一,字體朦就係顯示器壞或者線材問題。錯。只限個別程式朦、其他程式利,顯示器層無問題,兇手在縮放層。成個桌面都朦先至要諗解像度層,固定位置異常先至要諗面板層。
誤區二,縮放越大、字體越利。錯。縮放放大的是邏輯尺寸,點陣拉伸之後筆畫邊緣只會更糊,唔會生出新細節。縮放的作用係令介面睇得舒服,唔係令字體解像度變高。
誤區三,換高解像度顯示器就解決。錯。高解像度顯示器通常要用更大縮放比例,唔識縮放的程式拉伸幅度更大,朦可以更明顯。換顯示器之前,要先用上面七步確認朦的層級,否則換完可能更朦。
誤區四,所有程式都應該一樣利。錯。感知層級唔同,同一桌面、同一縮放比例,識縮放的程式利、唔識的程式朦,係預期差異,唔係顯示器偏心。將呢個差異當成故障,會令人走錯路。
誤區五,調程式內縮放就可以醫系統縮放朦。錯。兩層分開,程式內縮放改的是內容尺寸,系統點陣拉伸仲喺度。程式內縮放調得再大,系統拉伸嗰層的朦都唔會消失。
常見問題
問:點解同一部顯示器,有啲程式字體好利,有啲就好朦?
答:因為感知層級唔同。識每顯示器縮放的程式會重新繪製,字體利;唔識縮放的程式要靠系統將點陣圖拉大,筆畫邊緣攤開就朦。同一桌面、同一縮放比例,兩種程式表現唔同係預期差異,唔係顯示器問題。
問:點解程式由主顯示器拖去副顯示器,突然就變朦?
答:因為兩部顯示器縮放比例唔同,而程式只識系統單一比例。搬過去嗰陣程式唔會重新繪製,系統繼續用舊尺寸拉伸,成個程式就朦。重開程式,程式按新顯示器的縮放比例重新繪製,就有機會變返利。呢個模式本身就係診斷線索。
問:將縮放改回無放大,字體變返利,係咪代表以後都唔可以用縮放?
答:唔係。無縮放對照只係診斷步,用來證實朦同縮放層有關。證實之後,可以返去試程式 DPI 設定對照,逐個選項睇邊個令文字利、邊個令版面走樣,再按程式用途取捨。無縮放唔係長期建議,只係診斷工具。
問:文字利但圖示朦,係咪即係設定做錯?
答:唔一定。文字可以用向量方式重新繪製,圖示本身可能就是點陣圖,程式手頭上無更高解像度的版本可以換,拉大之後一樣朦。呢個組合指向素材層,系統設定醫唔到,唔好不斷改設定兜圈。
問:改完縮放比例,點解有啲程式要重開先生效?
答:因為感知層級。只識系統單一比例的程式,改縮放之後唔會自動重新繪製,要重開先至按新比例繪製。呢個係正常行為,唔係故障,唔好因為重開先見效就以為之前做錯。
問:成個桌面所有程式都朦,係咪都係縮放層問題?
答:唔一定。成個桌面都朦,優先諗解像度層:先確認顯示器行緊原生解像度,未行原生解像度,成幅畫面拉伸,歸第 174 篇。只限個別程式朦,先至係本文的縮放層。第一步定範圍就是用來分呢兩層。
送檢前記低咩
如果跟足上面七步都分唔到,或者各層對照完仍然有疑問,送檢之前記低幾項資料,會幫到檢測好多:朦係咪只限個別程式,顯示器係咪行緊原生解像度,無縮放對照結果,搬顯示器之後朦唔朦跟唔跟住搬、重開有無好返,程式 DPI 設定逐個選項的結果,文字同圖示邊樣朦。記低呢啲資料,檢測嗰陣就唔使由頭估。
香港顯示卡專業維修 HK GPU Fix 位於石門達利廣場 1209 室,電話 2186 8010,WhatsApp 6558 6806。檢測同維修收費按網站已公開三級收費 HK$400–2,800,視乎檢測結果而定。送修前可以先記低上面幾項資料,方便檢測時對照。