2012-06-06 47 views
6

Tôi đang cố gắng hiển thị các ký tự unicode đặc biệt, đặc biệt là toán tử toán học trong các emacs. Cụ thể:Emacs: Thiết lập phông chữ để hiển thị các ký tự unicode trong OSX

   position: 283 of 317 (89%), column: 0 
      character: (displayed as) (codepoint 120046, #o352356, #x1d4ee) 
    preferred charset: unicode (Unicode (ISO10646)) 
code point in charset: 0x1D4EE 
       syntax: w which means: word 
      category: .:Base, L:Left-to-right (strong) 
      buffer code: #xF0 #x9D #x93 #xAE 
      file code: #xF0 #x9D #x93 #xAE 
       (encoded by coding system utf-8-unix) 
       display: no font available 
     Unicode data: 
       Name: MATHEMATICAL BOLD SCRIPT SMALL E 
      Category: Letter, Lowercase 
     Combining class: Ll 
     Bidi category: Ll 
     Decomposition: font e 

Character code properties: customize what to show 
    name: MATHEMATICAL BOLD SCRIPT SMALL E 
    general-category: Ll (Letter, Lowercase) 
    decomposition: (font 101) (font 'e') 

There are text properties here: 
    fontified   t 

Tôi đang sử dụng GNU Emacs 24 nhị phân đêm gần đây. Các văn bản trên hiển thị tốt trên trình duyệt của tôi và trong TextEdit tuy nhiên, các ký tự đặc biệt xuất hiện trống khi xem trong emacs.

Tôi đọc điều này từ một Emac cũ 22 manual: "Phông chữ không nhất thiết phải chỉ định phông chữ cho tất cả các mã ký tự. Nếu phông chữ chỉ định phông chữ cho một ký tự nhất định hoặc nếu nó chỉ định phông chữ không tồn tại trên hệ thống của bạn, sau đó nó không thể hiển thị nhân vật đó. Thay vào đó nó sẽ hiển thị một ô trống. " - Đây là hành vi chính xác Tôi đang quan sát

Có vẻ như tôi có thể cần phải tạo phông chữ để có thể hiển thị các ký tự tùy ý đó (bắt đầu với các tệp Xdefaults hoặc Xresources).

Làm cách nào để xác định những gia đình phông chữ nào tôi cần đưa vào phông chữ để hiển thị Toán tử (hầu hết các ví dụ trực tuyến đều đề cập đến các ngôn ngữ như tiếng Latinh, tiếng Trung, v.v.)? Tôi thậm chí không thể tìm thấy bất kỳ ví dụ nào về tệp .Xdefault hoặc .Xresource.

Tôi có đi đúng hướng không? Có một cách dễ dàng hơn/rõ ràng hơn để làm điều này?

+0

Chủ đề của nó tại đây. Khinh bỉ. Đừng lo lắng về việc di chuyển nó. – Will

Trả lời

1

Tôi tin rằng có một lỗi được biết đến với emacs MacOS và hiển thị ký tự vượt quá BMP. Xem ví dụ báo cáo lỗi (chưa được trả lời) của tôi tại số Emacs bugs.

Sau khi báo cáo lỗi này, tôi đã có một e-mail đề xuất sử dụng số “Mac port” version of emacs. Điều này dường như hiển thị các ký tự không phải BMP.

Tất nhiên, sẽ rất tuyệt nếu lỗi được khắc phục trong dòng chính phát triển của emacs. Nó cũng sẽ rất tuyệt nếu lỗi được chính thức thừa nhận ...

2

Chức năng set-fontset-font có thể được sử dụng để chỉ định phông chữ nào sẽ sử dụng cho bất kỳ phạm vi ký tự nào; ví dụ:

(set-fontset-font t '(#x1d4ee . #x1d4ee) (font-spec :family "FreeSerif")) 
+0

Cảm ơn! Điều này rất hữu ích. Điều này rất cụ thể đối với một ký tự. Có một cách tổng quát hơn tôi có thể làm điều này? Bây giờ tôi nhận ra tôi đang mất tích nhiều hơn nữa. – GeneralBecos

+0

Tôi đã thử mọi phông chữ trong hệ thống, nhưng các emac không thể hiển thị ký tự này (và hơn thế nữa). – GeneralBecos

3

Tôi có cùng một vấn đề và tôi cũng không có giải pháp chung. Đây là cách tiếp cận của tôi để sửa một ký tự đơn (hoặc có thể là một phạm vi), giả định rằng bạn có ký tự trong bộ đệm và nó không hiển thị.

Một số thử nghiệm cho thấy Menlo là một nguồn nhân vật hữu ích, như FreeSerif.

  1. Đặt con trỏ trước ký tự không được hiển thị.

  2. m-x mô tả-char. Điều này cung cấp cho bạn rất nhiều thông tin về nhân vật, bao gồm một dòng của biểu mẫu "điểm mã trong bộ ký tự: 0x2055".

    1. Một nơi nào đó trong tệp .emac hoặc các tệp có liên quan của bạn, hãy sử dụng chức năng này. Nó có khả năng có thể sửa chữa một loạt các nhân vật bằng cách snagging chúng từ gia đình FreeSerif hoặc cái gì khác, nhưng tôi không có sự lựa chọn tốt cho bất cứ điều gì nhưng một vài ký tự.
 
    (defun bbextra-fix-fontset-font (from &optional to family) 
     "Make characters FROM to TO come from FAMILY. 
    Default value of TO is FROM, and of FAMILY is FreeSerif (which 
    seems to have some of the characters)" 
    (set-fontset-font t (cons from (or to from)) 
         (font-spec :family (or family "FreeSerif")))) 

    ;; Here are the characters I have fixed. 
    (bbextra-fix-fontset-font #x2042) 
    (bbextra-fix-fontset-font #x2023) 
    (bbextra-fix-fontset-font #x203D) 
    (bbextra-fix-fontset-font #x2055) 


    ;These come from Menlo 
    (bbextra-fix-fontset-font #x2620 #x2620 "Menlo") ; skull and crossbones 
    (bbextra-fix-fontset-font #x266C#x266C "Menlo") ; 16th notes 
    (bbextra-fix-fontset-font #x2695 #x2695 "Menlo") ; asclepion 
    (bbextra-fix-fontset-font #x2624 #x2624 "Menlo") ; caduceus 
+0

Cảm ơn, điều đó thực sự hiệu quả! Với một chút công việc, chúng ta có thể tìm ra tất cả các phạm vi có vấn đề và đặt cùng một tệp '.el' để bao gồm tất cả. –

Các vấn đề liên quan