je n'ai jamais réussi à faire afficher sur mon terminal des symboles unicode. par exemple, avant d'avoir mon système d'exploitation actuel, j'ai mappé ctrl + a au mu grec dans vim, et cela fonctionne sur d'autres ordinateurs, mais pas sur mon xterm actuel. voici la section pertinente de mon .vimrc
:
set encoding=utf-8
"map control-a to mu
imap <C-a> <C-k>m*
aussi, j'ai besoin de produire des équations sympy en python, et cela fonctionne sur d'autres ordinateurs, mais pas sur mon xterm actuel. au lieu de cela:
$ python
Python 2.7.3 (default, Mar 14 2014, 11:57:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sympy
>>> x = sympy.symbols('x')
>>> sympy.init_printing()
>>> (sympy.sqrt(x**3/(x+1)), 1)
⎛ _______ ⎞
⎜ ╱ 3 ⎟
⎜ ╱ x ⎟
⎜ ╱ ───── , 1⎟
⎝╲╱ x + 1 ⎠
j'ai compris:
>>> (sympy.sqrt(x**3/(x+1)), 1)
n ------- n
n n 3 n
n n x n
n n ───── , 1n
nnnn x + 1 n
en fait, il semble simplement utiliser le n
caractère chaque fois qu'il ne peut pas afficher un caractère unicode.
J'exécute xterm à partir d'un ~/.xinitrc
fichier et je définis des polices et des couleurs pour le terminal ~/.Xresources
. voici toutes les informations pertinentes auxquelles je pourrais penser:
$ uname -a
Linux mypcname 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
$ xterm -version
XTerm(278)
$ cat ~/.xinitrc
#!/bin/bash
#update the xterm colors, font size, etc
[[ -f ~/.Xresources ]] && xrdb -merge ~/.Xresources
# run the window manager in the background first
metacity &
# get the window manager process id
wm_pid=$!
# wait a little while for the window manager to load (extend this if the xterm is not being properly maximised)
sleep 2
# run the xterm in fullscreen
#xterm +u8 -js -fullscreen &
xterm -en en_AU.UTF-8 -js -fullscreen &
# do not let the window manager become a zombie
wait $wm_pid
# this would run xterm first, then the window manager. doesn't maximise properly the first time startx is run
#xterm -fullscreen &
#exec mutter
$ cat ~/.Xresources
! see man xterm under the resources heading for explanations
! run `xrdb -merge ~/.Xresources` after altering this file
! run `xrdb -query -all` to see the current settings
xterm.vt100.faceName: Terminus
xterm.vt100.faceSize: 14
! do not display bold fonts in bold
xterm.vt100.AllowBoldFonts: false
! display bold fonts in a different color to make them stand out
xterm.vt100.colorBDMode: true
! use green as the bold color (same as in ~/.bashrc)
xterm.vt100.colorBD: #98E34D
! cols x lines ... update with values from $(echo $COLUMNS) and $(echo $LINES)
xterm.vt100.geometry: 126x52
! dark green foreground (same as in ~/.bashrc)
*foreground: #4E9A06
! black background
*background: #000000
! scroll quickly
xterm*fastScroll: true
! enable utf-8 encoding
xterm*locale: true
xterm*utf8: 1
! flash the current line instead of making the bell sound
*visualBell: true
*visualBellLine: true
! black
*color0: #2E3436
! darkred
*color1: #CC0000
! dark green
*color2: #4E9A06
! brown
*color3: #C4A000
! darkblue
*color4: #3465A4
! darkmagenta
*color5: #75507B
! darkcyan
*color6: #06989A
! lightgrey
*color7: #D3D7CF
! darkgrey
*color8: #555753
! red
*color9: #EF2929
! green
*colorA: #8AE234
! yellow
*colorB: #FCE94F
! blue
*colorC: #729FCF
! magenta
*colorD: #AD7FA8
! cyan
*colorE: #34E2E2
! white
*colorF: #EEEEEC
$ tail -10 .bashrc
PATH=/usr/local/bin:/usr/bin:/bin:/sbin
export LC_ALL=en_AU.UTF-8
export LANG=en_AU.UTF-8
export LANGUAGE=en_AU.UTF-8
# final logon actions:
# go straight to x on login. only do this for tty1 so that we can still use the other tty consoles without starting x. also only do this when there is not already a display, otherwise the xterm will try and do this after x starts aswell
[[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]] && startx
$ locale
LANG=en_AU.UTF-8
LANGUAGE=en_AU.UTF-8
LC_CTYPE="en_AU.UTF-8"
LC_NUMERIC="en_AU.UTF-8"
LC_TIME="en_AU.UTF-8"
LC_COLLATE="en_AU.UTF-8"
LC_MONETARY="en_AU.UTF-8"
LC_MESSAGES="en_AU.UTF-8"
LC_PAPER="en_AU.UTF-8"
LC_NAME="en_AU.UTF-8"
LC_ADDRESS="en_AU.UTF-8"
LC_TELEPHONE="en_AU.UTF-8"
LC_MEASUREMENT="en_AU.UTF-8"
LC_IDENTIFICATION="en_AU.UTF-8"
LC_ALL=en_AU.UTF-8
$ printenv XTERM_LOCALE
en_AU.UTF-8
$ xrdb -query -all
*background: #000000
*color0: #2E3436
*color1: #CC0000
*color2: #4E9A06
*color3: #C4A000
*color4: #3465A4
*color5: #75507B
*color6: #06989A
*color7: #D3D7CF
*color8: #555753
*color9: #EF2929
*colorA: #8AE234
*colorB: #FCE94F
*colorC: #729FCF
*colorD: #AD7FA8
*colorE: #34E2E2
*colorF: #EEEEEC
*foreground: #4E9A06
*visualBell: true
*visualBellLine: true
xterm*fastScroll: true
xterm*locale: true
xterm*utf8: 1
xterm.vt100.AllowBoldFonts: false
xterm.vt100.colorBD: #98E34D
xterm.vt100.colorBDMode: true
xterm.vt100.faceName: Terminus
xterm.vt100.faceSize: 14
xterm.vt100.geometry: 126x52
comment puis-je faire fonctionner utf-8 pour afficher les symboles grecs dans vim et les équations dans sympy
?
informations supplémentaires demandées
$ echo $TERM
xterm
$ appres XTerm
*form.Thickness: 0
*tekMenu*tekreset*Label: RESET
*tekMenu*tektext2*Label: #2 Size Characters
*tekMenu*tekhide*Label: Hide Tek Window
*tekMenu*tekcopy*Label: COPY
*tekMenu*tektext3*Label: #3 Size Characters
*tekMenu*vtshow*Label: Show VT Window
*tekMenu*tektextsmall*Label: Small Characters
*tekMenu*vtmode*Label: Switch to VT Mode
*tekMenu*tektextlarge*Label: Large Characters
*tekMenu*tekpage*Label: PAGE
*tekMenu.Label: Tek Options
*mainMenu*redraw*Label: Redraw Window
*mainMenu*sunKeyboard*Label: VT220 Keyboard
*mainMenu*terminate*Label: Send TERM Signal
*mainMenu*backarrow key*Label: Backarrow Key (BS/DEL)
*mainMenu*logging*Label: Log to File
*mainMenu*hpFunctionKeys*Label: HP Function-Keys
*mainMenu*kill*Label: Send KILL Signal
*mainMenu*num-lock*Label: Alt/NumLock Modifiers
*mainMenu*print-immediate*Label: Print-All Immediately
*mainMenu*scoFunctionKeys*Label: SCO Function-Keys
*mainMenu*quit*Label: Quit
*mainMenu*alt-esc*Label: Alt Sends Escape
*mainMenu*print-on-error*Label: Print-All on Error
*mainMenu*tcapFunctionKeys*Label: Termcap Function-Keys
*mainMenu*meta-esc*Label: Meta Sends Escape
*mainMenu*toolbar*Label: Toolbar
*mainMenu*print*Label: Print Window
*mainMenu*suspend*Label: Send STOP Signal
*mainMenu*delete-is-del*Label: Delete is DEL
*mainMenu*print-redir*Label: Redirect to Printer
*mainMenu*fullscreen*Label: Full Screen
*mainMenu*continue*Label: Send CONT Signal
*mainMenu*oldFunctionKeys*Label: Old Function-Keys
*mainMenu*securekbd*Label: Secure Keyboard
*mainMenu*interrupt*Label: Send INT Signal
*mainMenu*8-bit control*Label: 8-Bit Controls
*mainMenu*allowsends*Label: Allow SendEvents
*mainMenu*sunFunctionKeys*Label: Sun Function-Keys
*mainMenu*hangup*Label: Send HUP Signal
*mainMenu.Label: Main Options
*VT100.utf8Fonts.font4: -misc-fixed-medium-r-normal--13-120-75-75-c-80-iso10646-1
*VT100.utf8Fonts.font2: -misc-fixed-medium-r-normal--8-80-75-75-c-50-iso10646-1
*VT100.utf8Fonts.font6: -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1
*VT100.utf8Fonts.font5: -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1
*VT100.utf8Fonts.font3: -misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1
*VT100.utf8Fonts.font: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1
*VT100.font4: 7x13
*VT100.font2: 5x7
*VT100.font6: 10x20
*VT100.font5: 9x15
*VT100.font3: 6x10
*VT100.font1: nil2
*vtMenu*selectToClipboard*Label: Select to Clipboard
*vtMenu*reversewrap*Label: Enable Reverse Wraparound
*vtMenu*softreset*Label: Do Soft Reset
*vtMenu*cursesemul*Label: Enable Curses Emulation
*vtMenu*autolinefeed*Label: Enable Auto Linefeed
*vtMenu*hardreset*Label: Do Full Reset
*vtMenu*visualbell*Label: Enable Visual Bell
*vtMenu*appcursor*Label: Enable Application Cursor Keys
*vtMenu*clearsavedlines*Label: Reset and Clear Saved Lines
*vtMenu*bellIsUrgent*Label: Enable Bell Urgency
*vtMenu*appkeypad*Label: Enable Application Keypad
*vtMenu*tekshow*Label: Show Tek Window
*vtMenu*poponbell*Label: Enable Pop on Bell
*vtMenu*scrollbar*Label: Enable Scrollbar
*vtMenu*scrollkey*Label: Scroll to Bottom on Key Press
*vtMenu*tekmode*Label: Switch to Tek Mode
*vtMenu*scrollttyoutput*Label: Scroll to Bottom on Tty Output
*vtMenu*jumpscroll*Label: Enable Jump Scroll
*vtMenu*cursorblink*Label: Enable Blinking Cursor
*vtMenu*vthide*Label: Hide VT Window
*vtMenu*allow132*Label: Allow 80/132 Column Switching
*vtMenu*reversevideo*Label: Enable Reverse Video
*vtMenu*titeInhibit*Label: Enable Alternate Screen Switching
*vtMenu*altscreen*Label: Show Alternate Screen
*vtMenu*keepSelection*Label: Keep Selection
*vtMenu*autowrap*Label: Enable Auto Wraparound
*vtMenu*activeicon*Label: Enable Active Icon
*vtMenu.Label: VT Options
*SimpleMenu*menuLabel.font: -adobe-helvetica-bold-r-normal--*-120-*-*-*-*-iso8859-*
*SimpleMenu*menuLabel.vertSpace: 100
*SimpleMenu*Sme.height: 16
*SimpleMenu*BackingStore: NotUseful
*SimpleMenu*HorizontalMargins: 16
*SimpleMenu*Cursor: left_ptr
*SimpleMenu*borderWidth: 2
*menubar.borderWidth: 0
*tek4014*fontLarge: 9x15
*tek4014*font2: 8x13
*tek4014*font3: 6x13
*tek4014*fontSmall: 6x10
*MenuButton*borderWidth: 0
*fontMenu*render-font*Label: TrueType Fonts
*fontMenu*fontdefault*Label: Default
*fontMenu*font6*Label: Huge
*fontMenu*allow-window-ops*Label: Allow Window Ops
*fontMenu*utf8-mode*Label: UTF-8 Encoding
*fontMenu*font1*Label: Unreadable
*fontMenu*fontescape*Label: Escape Sequence
*fontMenu*utf8-fonts*Label: UTF-8 Fonts
*fontMenu*fontsel*Label: Selection
*fontMenu*allow-bold-fonts*Label: Bold Fonts
*fontMenu*utf8-title*Label: UTF-8 Titles
*fontMenu*font-linedrawing*Label: Line-Drawing Characters
*fontMenu*font2*Label: Tiny
*fontMenu*allow-color-ops*Label: Allow Color Ops
*fontMenu*font-doublesize*Label: Doublesized Characters
*fontMenu*font3*Label: Small
*fontMenu*allow-font-ops*Label: Allow Font Ops
*fontMenu*font-loadable*Label: VT220 Soft Fonts
*fontMenu*font4*Label: Medium
*fontMenu*allow-tcap-ops*Label: Allow Termcap Ops
*fontMenu*font-packed*Label: Packed Font
*fontMenu*font5*Label: Large
*fontMenu*allow-title-ops*Label: Allow Title Ops
*fontMenu.Label: VT Fonts
*colorD: #AD7FA8
*color5: #75507B
*backarrowKeyIsErase: true
*colorE: #34E2E2
*color6: #06989A
*ptyInitialErase: true
*colorF: #EEEEEC
*background: #000000
*color7: #D3D7CF
*saveLines: 1024
*color8: #555753
*color0: #2E3436
*foreground: #4E9A06
*IconFont: nil2
*color9: #EF2929
*color1: #CC0000
*visualBell: true
*colorA: #8AE234
*color2: #4E9A06
*visualBellLine: true
*colorB: #FCE94F
*color3: #C4A000
*colorC: #729FCF
*color4: #3465A4
$ xterm -u8 -fa "DejaVu Sans Mono"
# the following is typed in the resulting terminal:
$ echo -e "\xE2\x98\xA0"
n
# however when i copy the result from `echo -e "\xE2\x98\xA0"`
# into my browser, i get this: ☠ (a skull) but it does not show
# up as a skull in my xterm
$ lsof -p $PPID | grep fonts
xterm 5990 me mem REG 254,1 4971 13501810 /usr/share/fonts/X11/misc/ter-u18b_iso-8859-1.pcf.gz
xterm 5990 me mem REG 254,1 4897 13505403 /usr/share/fonts/X11/misc/ter-u18n_iso-8859-1.pcf.gz
j'ai également couru $ fc-list
mais la sortie était trop grande pour coller dans cette question. donc je l'ai mis ici
ce qu'il montre dans mon navigateur:
/usr/share/fonts/truetype/freefont/FreeSansBold.ttf: FreeSans:style=Bold,получерен,negreta,tučné,fed,Fett,Έντονα,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,gros,Полужирный,Fet,Kalın,huruf tebal,жирний,Krepko,treknraksts,pusjuodis,đậm,Lodia,धृष्ट
ce que je vois dans mon terminal:
/usr/share/fonts/truetype/freefont/FreeSansBold.ttf: FreeSans:style=Bold,nnnnnnnnn,negreta,tunné,fed,Fett,nnnnnn,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,gros,nnnnnnnnnn,Fet,Kalın,huruf tebal,nnnnnn,Krepko,treknraksts,pusjuodis,nậm,Lodia,nnn
fait intéressant, certains caractères "spéciaux" apparaissent dans mon terminal, mais la plupart sont remplacés par n
. vous pouvez voir dans la sortie précédente qu'aucun получерен
ne peut être affiché, mais le caractère final de tučné
peut être affiché (tandis que le milieu č
ne peut pas - il est remplacé par n
)
selon les commentaires de @ apaul, il semble que xterm ne charge pas la bonne police. essayez de définir une classe factice afin qu'elle ne charge pas les ressources xterm:
$ xterm -class Foo -name foo -u8 -fa "DejaVu Sans Mono:style=Book"
$ # the following commands are all executed in the resulting terminal:
$ echo -e "\xE2\x98\xA0"
☠
$ # the above skull actually shows up now. and so does the unicode
$ # output from sympy and also vi can display greek symbols now :)
il ne reste plus qu'à comprendre pourquoi xterm ne peut pas définir la police à l'aide de ~/.Xresoureces
, et à faire fonctionner cela. il semble que quelque chose doit remplacer les paramètres de police?
en fait, je pensais juste essayer la commande ci-dessus avec la police terminus, et il semble que ce soit le problème:
$ xterm -class Foo -name foo -u8 -fa "Terminus"
$ # the following commands are all executed in the resulting terminal:
$ echo -e "\xE2\x98\xA0"
n
peut-être que terminus n'est pas correctement installé? ou est mappé à autre chose. comment pourrais-je le découvrir?
-fa "DejaVu Sans Mono:size=11:antialias=true"
Cependant, je ne comprends pas vos options-js
et-fullscreen
. Ma version de xterm ne les comprend pas. Mesxterm -version
sortiesX.Org 6.8.99.903(253)
.lsof -p $PPID | grep fonts
et vérifier la liste des polices pouvant être vues par xterm avecfc-list
.xterm -class Foo -name foo -u8 -fa "DejaVu Sans Mono:style=Book"
? (ici, nous définissons une classe fictive et un nom pour qu'il ne charge pas lesXTerm*
ressources.)Réponses:
Écrivant en 2016, parlant du patch xterm # 278 (publié en 2012):
xterm utilise une seule police, plutôt que des ensembles de polices pris en charge par plusieurs autres terminaux. Les caractères pseudo-graphiques dans ce (collé à partir de xterm):
ne sont pas fournis par la police TypeType spécifiée ici:
Autres terminaux, étant donné que la police fournirait ces caractères d' une autre police.
La façon de faire fonctionner xterm est
Ce dernier est adressé à la plupart des utilisateurs par le paramètre par défaut de la
locale
ressource: xterm utilisera (généralement) le codage UTF-8. Mais le comportement par défaut est compatible VT100, d'où l'utilisation de polices compatibles ISO-8859-1.n
sont U + 239B, U + 239C, U + 239D, U + 239E, U + 23A0.n
comme décrit dans la question.Cela se produit car (bien que xterm sache que les glyphes sont manquants), il a imprimé la chaîne en utilisant la police, en supposant que (comme la plupart des autres polices) les entrées manquantes seront affichées comme des blancs . Dans ce cas, la bibliothèque freetype semble mapper l'octet de poids faible des valeurs Unicode dans la plage prise en charge par Terminus. Cela se trouve dans une plage dans laquelle la police s'affiche
n
(pour «aucun de ces caractères»):La solution rapide utilise le
uxterm
script, qui sélectionne une police différente et garantit que le codage UTF-8 est utilisé.Lectures complémentaires:
uxterm
- Émulateur de terminal X pour les environnements Unicode (UTF-8)uxterm
)Ce qui précède parlait du patch # 278 de xterm, qui avait quatre ans en 2016. Le développement de xterm est en cours, et à partir du patch # 338 (fin 2018), les jeux de polices TrueType sont pris en charge. Voici une capture d'écran utilisant les paramètres de ressources de l'OP à partir du patch xterm # 342 (le # 343 sera probablement sorti "bientôt"):
En utilisant l'
-report-fonts
option, je vois qu'il a chargé ces fichiers de polices (traitant les caractères gras / italiques comme les "mêmes" que la normale , et utilisant une deuxième police pour les caractères spéciaux):Le nombre réel de polices dépend de ce que vous voulez faire. Pour tester la plage existante de valeurs Unicode, il peut utiliser quelques dizaines de polices.
la source
Solutions des commentaires:
uxterm
xterm -u8
-iso10646-1
Par exemple, pour
xterm
(classe XXterm
) et la police Terminus, vous pouvez ajouter à ~ / .XresourcesPour trouver les polices et leurs spécifications de polices installées sur votre système, consultez les
/usr/share/fonts/*/*.dir
fichiers. Après la modification~/.Xresources
, chargez-les avecxrdb -merge ~/.Xresources
.la source
Malheureusement, moi non plus, je n'ai pas pu obtenir la prise en charge unicode correctement configurée dans
xterm
. Comme solution de contournement, j'ai fini par installerrxvt
, qui est disponible à partir de rpmforge sur les distributions EL. Il existe également une version unicode-256color du programme, qui fonctionne très bien pour moi. Voici la description:ArchWiki a des informations utiles comme toujours sur la configuration et les cas d'utilisation.
la source
rxvt-unicode
aussiQu'en est-il de l'utilisation des polices TrueType comme ci-dessous? Je ne peux pas faire fonctionner l'
-fn *-*-...
option standard avec xterm, mais cela fonctionne parfaitement.Les polices Inconsolata peuvent être téléchargées ici
la source