Tại sao chiều cao phông chữ thay đổi khi in đậm?


9

Thật là khó chịu ...

Khi bất kỳ văn bản nào trên một dòng có mặt thay đổi để văn bản được in đậm, chiều cao của dòng sẽ tăng thêm (tôi giả sử) một pixel. Nó được hiển thị tốt nhất với một hình ảnh:

nhập mô tả hình ảnh ở đây

Tại sao lại thế này? Làm thế nào để tôi ngăn chặn nó?


Theo yêu cầu, thông tin trên nền tảng:

  • Debian GNU / Linux sid (không ổn định) trên amd64
  • Emacs sử dụng libgtk-3.so.0 (gtk 3.14.5), trên XFCE 4.12

Tôi đã thử các phông chữ sau tại 8pt, 9pt, 10pt và 11pt:

  • DejaVu Sans Mono
  • DejaVu Sans
  • DejaVu Serif
  • Droid Sans Mono
  • Giải phóng Mono

Vấn đề chỉ xảy ra với DejaVu Sans Mono và DejaVu Sans, và chỉ ở 9pt và 10pt. (Hình trên cho thấy DejaVu Sans Mono-9.)


2
Bạn nên xem các thuộc tính khuôn mặt của defunexample trước khi đặt khoảng trắng và sau đó lại vào mỗi từ sau khi đặt khoảng trắng giữa defunví dụ . Điều này được thực hiện bằng cách đặt con trỏ tại điểm mong muốn và sau đó gõ C-u C-x =. Bạn có thể sẽ thấy rằng khuôn mặt ảnh hưởng đến defun hoặc ví dụ ảnh hưởng đến khuôn mặt có các thuộc tính khác nhau chịu trách nhiệm cho hành vi bạn nhìn thấy - ví dụ, ngoài màu cơ bản của tiền cảnh. Các thuộc tính khuôn mặt có thể được tùy chỉnh bởi người dùng.
luật

Bạn có thể thêm hệ điều hành và trình quản lý cửa sổ vào câu hỏi của mình không và một số thông tin về GUI mà Emacs của bạn sử dụng (ví dụ: Gtk2, Gtk3, v.v.)?
lunaryorn

@lawlist: cảm ơn người đàn ông. Với không gian, nó được áp dụng phông chữ khóa-chức năng-tên-mặt, có chiều cao không xác định (vì vậy tôi đoán là mặc định?). Không có không gian, không có khuôn mặt nào được áp dụng (vì vậy, một lần nữa, tôi đoán mặc định?) Mặc định được đặt trong chủ đề của tôi thành :height 90(9pt).
edam

@lawlist: một số điều tra nữa .... trong chủ đề, nếu tôi xóa / thêm / xóa / thêm :weight boldtừ font-lock-function-name-face(và thực hiện lại custom-theme-set-faceslệnh của chủ đề ), tôi có thể thấy chiều cao của defundòng thay đổi 1px! Đó chắc chắn là thuộc tính táo bạo gây ra nó, tôi nghĩ.
edam

Tôi đoán dựa trên nhận xét của bạn sẽ là họ phông chữ mà bạn chọn có chiều cao khác nhau cho các thuộc tính in đậm, do đó không thể thay đổi trừ khi bạn giảm thủ công - dùng thử và lỗi bằng cách giảm dần kích thước điểm. Ngoài ra, chọn một gia đình không thay đổi chiều cao khi áp dụng đậm. Cá nhân tôi không còn sử dụng đậm hoặc gạch chân trong bất kỳ chủ đề tùy chỉnh nào của mình vì nhiều lý do liên quan đến hiệu ứng hình ảnh trong bộ đệm - khi tôi tạo một gạch chân cho dòng hiện tại, nó được thực hiện với lớp phủ. Để in đậm, tôi chỉ cần sử dụng các màu mạnh - ví dụ: đỏ tươi, vàng, ...
luật

Câu trả lời:


2

Chiều cao phông chữ thay đổi trong DejaVu ở kích thước điểm đó vì thông tin về chiều cao phông chữ giữa hai phông chữ bình thường và phông chữ đậm là khác nhau khi nó phải giống nhau.

Phông chữ DejaVu Sans Mono 10 mà tôi sử dụng không làm thay đổi chiều cao phông chữ giữa trọng lượng bình thường và đậm. Tôi đặt nó trong .emacs của tôi với(set-frame-font "DejaVu Sans Mono-10")

Vì vậy, bạn có một cái gì đó để so sánh với, thông tin cho phông chữ "DejaVu Sans 10" thông qua (phông chữ thông tin trên Emacs 25):

(font-info "DejaVu Sans Mono-10")
["-unknown-DejaVu Sans Mono-normal-normal-normal-*-13-*-*-*-m-0-iso10646-1" 
"DejaVu Sans Mono:pixelsize=13:foundry=unknown:weight=normal:slant=normal:
width=normal:spacing=100:scalable=true" 13 17 0 0 0 8 13 4 8 8 
"/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf" (opentype ((DFLT ...) )))]

EDIT dựa trên thông tin tiếp theo:

Trong thông tin phông chữ ở trên, tôi hiển thị chiều cao phông chữ là 17 và bạn báo cáo chiều cao là 15 (bình thường) hoặc 16 (đậm). Trong emacs 25 có thông tin phông chữ bổ sung sau 3 0, đặc biệt là phông chữ xuống là 4.

Mặc dù tôi không gặp vấn đề gì với Emacs 24 hoặc 25 với DejaVu Sans Mono và biến thể Bold, điều đơn giản nhất là sử dụng phông chữ và kích thước không thay đổi độ rộng (như được hiển thị bằng thông tin phông chữ) giữa thông thường và đậm hoặc một cái gì đó khác với DejaVu.

Đối với những gì gây ra điều này, nó có thể là một trong những thư viện của bạn, (gtk của tôi là libgtk-x11-2.0.so.0), nhưng tôi nghi ngờ đây sẽ là thư viện cụ thể này. Cũng nghi ngờ nó là tập tin ttf hoặc gói. Nhiều khả năng là kết xuất freetype (tôi có libfreetype.so.6). Vì DejaVu được chia tỷ lệ như các phông chữ khác phù hợp với bạn, nên một lỗi tính toán được đánh dấu bằng cách DejaVu được viết sẽ giải thích tại sao những phông chữ này hoạt động ở một số kích thước mà không phải là các phông chữ khác.

Để xác minh xem sự cố có phải là cụ thể của Emacs hay không, bạn có thể hiển thị hai cửa sổ đầu cuối, một cửa sổ có dấu nhắc đậm và một không có và so sánh khoảng cách dòng trên chúng. Nếu nó khác như Emacs, thì điều này phải làm với kết xuất và / hoặc phông chữ.

Nếu bạn biên dịch emacs, có thể có một cái gì đó đang xảy ra ở đó.


Điều này đã không làm việc ... (Tôi đã sử dụng DejaVu Sans Mono-9BTW). Tôi sẽ cập nhật mô tả ở trên ...
edam

Chế độ phông chữ giống nhau. Mono 10 thể hiện hành vi tương tự, nhưng 8 và 11pr thì không! Nó phải là một cái gì đó để làm với kết xuất phông chữ và chiều cao dòng khác nhau được trả lại cho bình thường và đậm. Emacs có sử dụng fontconfig không?
edam

1
Emacs không sử dụng fontconfig và thường khá độc đáo khi nói đến lựa chọn glyph.
wasamasa

(font-info "DejaVu Sans Mono-10")mang lại cho tôi ["-unknown-DejaVu Sans Mono-normal-normal-normal-*-13-*-*-*-m-0-iso10646-1" "DejaVu Sans Mono:pixelsize=13:foundry=unknown:weight=normal:slant=normal:width=normal:spacing=100:scalable=true" 13 15 0 0 0]. Tôi cũng đã fonts-dejavu-corecài đặt, và cũng có ttf-dejavu-core. Cả hai đều cung cấp một DejaVuSansMono.ttf(trong các thư mục khác nhau, nhưng chúng là các tệp giống nhau, vì vậy tôi không thấy vấn đề này). Tôi cũng nhận được Height: 98từ khuôn mặt (khi sử dụng DajaVu Sans Mono-10, trong đó thể hiện vấn đề trên). Tôi sẵn sàng cho bất kỳ đề xuất nào nữa! :)
edam

Lưu ý rằng một số tham số thông tin phông chữ của bạn là khác nhau. Tôi có "13 17 ..." trong khi bạn có "13 15 ..". Và nếu bạn nhận được thông tin phông chữ trợ giúp cho chức năng, bạn sẽ thấy sự khác biệt đầu tiên 17 (tôi) so với 15 (bạn) là chiều cao. Vì vậy, hãy thử thay đổi chiều cao thành 17.
đá
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.