X-server คำนวณ DPI อย่างไร


9

จากXfce Docs :

ในกรณีที่คุณต้องการแทนที่ค่า DPI (จุดต่อนิ้ว) ที่คำนวณโดย X-serverคุณสามารถเลือกช่องทำเครื่องหมายและใช้สปินบ็อกซ์เพื่อระบุความละเอียดที่จะใช้เมื่อหน้าจอของคุณแสดงแบบอักษร

แต่วิธีการที่ไม่เซิร์ฟเวอร์ X- คำนวณของตนหรือไม่ สมมติฐานอะไรที่ทำในกระบวนการและบางส่วนของพารามิเตอร์ที่สามารถแทนที่?

อาจรู้ว่าฉันมีพิกเซลบนหน้าจอกี่พิกเซล แต่ก็เพียงพอแล้ว

คำตอบ:


8

เท่าที่ผมรู้ว่าเริ่มต้นด้วยรุ่น 1.7 ค่าเริ่มต้นxorg 96 dpiมันไม่คำนวณอะไรเลยนอกจากคุณจะระบุDisplaySizeผ่านXorgไฟล์ปรับแต่ง นอกจากนี้อย่าพึ่งพาxdpyinfoเอาต์พุต
แล็ปท็อปของฉันทำงานบน Intel SandyBridge ตัดตอนมาจากของฉันXorg.0.logในการติดตั้ง Archlinux สด:

(==) intel(0): DPI set to (96, 96)

วิ่ง

xdpyinfo | grep -E 'dimensions|resolution'

ผลตอบแทน:

dimensions:    1600x900 pixels (423x238 millimeters)
resolution:    96x96 dots per inch

ซึ่งอยู่ไกลจากความเป็นจริง ฉันรู้ว่าขนาดหน้าจอของฉันเป็น344x193มิลลิเมตรดังนั้นจึงxdpyinfoคำนวณขนาดทางกายภาพตามความละเอียดพิกเซล ( 1600x900) และค่าเริ่มต้น96 DPIอย่างชัดเจน ถ้าฉันเพิ่ม

........
DisplaySize     344 193
........

ใน/etc/X11/xorg.conf.d/monitor.confและรีสตาร์ทXorg.0.logรายงานอย่างถูกต้อง:

(**) intel(0): Display dimensions: (344, 193) mm
(**) intel(0): DPI set to (118, 118)

อย่างไรก็ตามxdpyinfo | grep -E 'dimensions|resolution'ส่งคืนเสมอ:

dimensions:    1600x900 pixels (423x238 millimeters)
resolution:    96x96 dots per inch

ถึงกระนั้นไม่มีการเปลี่ยนแปลงทางสายตาขณะที่ฉันใช้ Gnome และ96 DPIยังมีการเข้ารหัสgnome-settings-daemonด้วยเช่นกัน 118 DPIหลังจากปะหลังผมสามารถเพลิดเพลินพื้นเมืองของฉัน แต่ถึงอย่างนั้นxdpyinfoก็ยังได้ผล:

dimensions:    1600x900 pixels (423x238 millimeters)
resolution:    96x96 dots per inch

7

X-server คำนวณ DPI อย่างไร

DPI ของเซิร์ฟเวอร์ X ถูกกำหนดในลักษณะดังต่อไปนี้:

  1. -dpiเลือกบรรทัดคำสั่งที่มีความสำคัญสูงสุด
  2. หากไม่ได้ใช้งาน DisplaySizeตั้งค่าในไฟล์ X config จะถูกใช้เพื่อให้ได้ DPI ที่ได้รับจากความละเอียดหน้าจอ
  3. ถ้าไม่ DisplaySizeกำหนดค่าขนาดจอภาพจาก DDC จะใช้เพื่อให้ได้มาซึ่ง DPI ตามความละเอียดหน้าจอ
  4. หาก DDC ไม่ได้ระบุขนาดจะใช้ค่าเริ่มต้น 75 DPI

อาจรู้ว่าฉันมีพิกเซลบนหน้าจอกี่พิกเซล แต่ก็เพียงพอแล้ว

ไม่มันไม่เพียง แต่รู้ขนาดของหน้าจอเสมือนเป็นพิกเซล แต่ (โดยปกติ) ยังมีขนาดการแสดงผลทางกายภาพเป็นมิลลิเมตร คุณสามารถตรวจสอบขนาดการแสดงผลของคุณโดยเรียกใช้สิ่งต่อไปนี้ในหน้าต่างเทอร์มินัล:

 ~ $ xdpyinfo | grep dimension
dimensions:    1366x768 pixels (361x203 millimeters)

การคำนวณซึ่งเป็นเซิร์ฟเวอร์ X ของคุณคือ:

  • 1366 พิกเซลหารด้วย 361 มิลลิเมตรคูณด้วย 25.4 มิลลิเมตรต่อนิ้ว = 96.11191136 จุดต่อนิ้ว (DPI)
  • 768 พิกเซลหารด้วย 203 มิลลิเมตรคูณด้วย 25.4 มิลลิเมตรต่อนิ้ว = 96.09458128 จุดต่อนิ้ว

คุณสามารถตรวจสอบสิ่งที่ DPI เซิร์ฟเวอร์ X ของคุณคำนวณได้โดยใช้คำสั่งต่อไปนี้:

 ~ $ xdpyinfo | grep resolution
 resolution:    96x96 dots per inch

ดูดีใช่มั้ย

สำหรับการอ่านเพิ่มเติม:


@ alois-mahdal ฉันเดาว่าฉันเข้าใจผิดคำถามในตอนแรก ฉันได้ปรับปรุงคำตอบที่เพิ่มมิติการแสดงผลที่ใช้โดยเซิร์ฟเวอร์ X
Afr

Xorg เริ่มต้นที่ 96x96 โดยไม่คำนึงถึงความละเอียดของจอภาพ ฉันคิดว่าเป็นเพราะโปรแกรมให้ภาพที่มีความหมายสำหรับ dpi มาตรฐานนี้ เป็นการดีกว่าที่จะออกไปเล็กน้อยเพื่อสร้างสิ่งประดิษฐ์ด้วยการปรับขนาดภาพตลอดเวลา DPI จริงของจอภาพหลักของฉันคือ 93.8 อย่างไรก็ตามการตั้งค่า DPI ที่กำหนดเองมีประโยชน์สำหรับจอแสดงผลขนาดใหญ่เช่น HDTV ขนาดใหญ่ที่มี DPI ต่ำกว่า 96 มาก
Colin

X ดูเหมือนจะไม่อนุญาตการตั้งค่า DPI ต่อจอภาพสำหรับหน้าจอเดียวว่า DPI นั้นถูกแชร์กับทุกจอภาพในหน้าจอเดียวกัน นอกจากนี้ยังพบว่ามิลลิเมตรที่กำหนดโดยไม่เพิ่มขึ้นจากมิลลิเมตรจากxdpyinfo xrandr --query
CMCDragonkai

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.