2012-06-06 16 views
6

Sto cercando di visualizzare caratteri unicode speciali, in particolare l'operatore matematico in emacs. Specificamente:Emacs: impostazione dei caratteri per la visualizzazione dei caratteri Unicode in 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 

Sto usando GNU Emacs 24 un binario notturno recente. Il testo sopra mostra bene sul mio browser e in TextEdit, tuttavia, i caratteri speciali appaiono vuoti se visualizzati in emacs.

ho letto questo da un vecchio Emacs 22 manual: "Un Fontset non necessariamente specificare un font per tutti i codici di carattere Se un Fontset specifica alcun tipo di carattere per un certo carattere, o se si specifica un tipo di carattere che non esiste. sul tuo sistema, quindi non può visualizzare quel carattere. Verrà visualizzata invece una casella vuota. " - Questo è il comportamento esatto che sto osservando

Sembra che potrebbe essere necessario creare un set di caratteri per poter visualizzare tali caratteri arbitrari (a partire dai file Xdefaults o Xresources).

Come identificare le famiglie di caratteri che sarà necessario includere nel set di caratteri per visualizzare gli operatori matematici (la maggior parte degli esempi online si riferisce a lingue come il latino, il cinese, ecc.)? Non sono riuscito a trovare alcun esempio di file .Xdefault o .Xresource.

Sono sulla buona strada? C'è un modo più semplice/ovvio per farlo?

+0

E 'un argomento qui. Leggermente. Non preoccuparti di spostarlo. – Will

risposta

1

Credo che ci sia un bug noto con emacs MacOS e personaggi che mostrano al di là del BMP. Vedi ad esempio la mia segnalazione di bug (senza risposta) allo Emacs bugs.

Dopo aver segnalato questo errore, ho ricevuto un'e-mail che suggeriva l'uso di “Mac port” version of emacs. Apparentemente questo mostra caratteri non BMP.

Ovviamente, sarebbe bello se il bug fosse stato risolto nella linea principale di sviluppo di emacs. Sarebbe anche carino se l'errore fosse ufficialmente riconosciuto ...

2

La funzione set-fontset-font può essere utilizzata per specificare il tipo di carattere da utilizzare per qualsiasi intervallo di caratteri; ad es.,

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

Grazie! Questo è utile. Questo è molto specifico per un personaggio. C'è un modo più generale di farlo? Ora mi rendo conto che mi mancano molti di più. – GeneralBecos

+0

Ho provato tutti i font del sistema, ma emacs non riesce a visualizzare questo carattere (e altro). – GeneralBecos

3

Ho lo stesso problema e non ho nemmeno una soluzione generale. Ecco il mio approccio alla correzione di un singolo carattere (o potenzialmente di un intervallo), partendo dal presupposto che si abbia il carattere in un buffer e non sia visualizzato.

Alcuni esperimenti hanno dimostrato che Menlo è un'utile fonte di caratteri, come FreeSerif.

  1. Posizionare il cursore prima del carattere non visualizzato.

  2. m-x Descrivere-char. Questo ti dà molte informazioni sul personaggio, inclusa una riga del modulo "code point in charset: 0x2055".

    1. Da qualche parte nei file .emac o correlati, utilizzare questa funzione. Può potenzialmente risolvere un'intera gamma di personaggi aggirandoli dalla famiglia FreeSerif o qualcos'altro, ma non ho buone scelte per nulla tranne alcuni caratteri.
 
    (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

Grazie, funziona davvero! Con un po 'di lavoro possiamo scoprire tutti gli intervalli problematici e mettere insieme un file '.el' per coprirli tutti. –

Problemi correlati