Nunca he podido hacer que mi terminal muestre símbolos Unicode. por ejemplo, antes de tener mi sistema operativo actual, asigné ctrl + a al griego mu en vim, y funciona en otras computadoras, pero no en mi xterm actual. Aquí está la sección relevante de mi .vimrc
:
set encoding=utf-8
"map control-a to mu
imap <C-a> <C-k>m*
Además, necesito generar ecuaciones simuladas en Python, y esto funciona en otras computadoras, pero no en mi xterm actual. en lugar de esto:
$ 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 ⎠
entiendo esto:
>>> (sympy.sqrt(x**3/(x+1)), 1)
n ------- n
n n 3 n
n n x n
n n ───── , 1n
nnnn x + 1 n
de hecho, parece que solo usa el n
carácter cada vez que no puede mostrar un carácter unicode.
Estoy ejecutando xterm desde un ~/.xinitrc
archivo y configurando algunas fuentes y colores para el terminal ~/.Xresources
. Aquí está toda la información relevante que se me ocurre:
$ 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
¿Cómo puedo hacer que utf-8 funcione para mostrar símbolos griegos en vim y ecuaciones sympy
?
información adicional solicitada
$ 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
También corrí $ fc-list
pero el resultado era demasiado grande para pegarlo en esta pregunta. así que lo puse aquí
lo que muestra en mi navegador:
/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,धृष्ट
lo que veo en mi 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
Curiosamente, algunos caracteres "especiales" aparecen en mi terminal, pero la mayoría se relaciona con ellos n
. puede ver en la salida anterior que no получерен
se puede mostrar ninguno de ellos , pero se puede mostrar el carácter final de tučné
(mientras que el medio č
no puede, se reemplaza por n
)
según los comentarios de @ apaul parece que xterm no está cargando la fuente correcta. intente establecer una clase ficticia para que no cargue los recursos 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 :)
todo lo que queda es descubrir por qué xterm no puede configurar la fuente usando ~/.Xresoureces
, y hacer que esto funcione. parece que algo debe estar anulando la configuración de fuente?
En realidad, solo pensé en probar el comando anterior con la fuente terminus, y parece que este es el problema:
$ xterm -class Foo -name foo -u8 -fa "Terminus"
$ # the following commands are all executed in the resulting terminal:
$ echo -e "\xE2\x98\xA0"
n
tal vez la terminal no está instalada correctamente? o está siendo mapeado a otra cosa. ¿Cómo podría averiguarlo?
-fa "DejaVu Sans Mono:size=11:antialias=true"
Sin embargo, no entiendo su-js
y sus-fullscreen
opciones. Mi versión de xterm no los entiende. Misxterm -version
salidasX.Org 6.8.99.903(253)
.lsof -p $PPID | grep fonts
y verifica la lista de fuentes que puede ver xterm confc-list
.xterm -class Foo -name foo -u8 -fa "DejaVu Sans Mono:style=Book"
? (aquí establecemos una clase ficticia y un nombre para que no cargue losXTerm*
recursos)Respuestas:
Escribiendo en 2016, hablando sobre el parche xterm # 278 (lanzado en 2012):
xterm usa una sola fuente, en lugar de conjuntos de fuentes que son compatibles con varios otros terminales. Los caracteres pseudo-gráficos en esto (pegado de xterm):
no son proporcionados por la fuente TypeType especificada aquí:
Otros terminales, dado que la fuente proporcionaría esos caracteres de otra fuente.
La forma de hacer que xterm funcione es
Este último está dirigido a la mayoría de los usuarios mediante la configuración predeterminada del
locale
recurso: xterm usará (generalmente) la codificación UTF-8. Pero el comportamiento predeterminado es compatible con VT100, de ahí el uso de fuentes compatibles con ISO-8859-1.n
son U + 239B, U + 239C, U + 239D, U + 239E, U + 23A0.n
como se describe en la pregunta.Eso sucede porque (aunque xterm sabe que faltan los glifos), ha impreso la cadena usando la fuente, suponiendo que (como la mayoría de las otras fuentes) las entradas faltantes se mostrarán en blanco . En este caso, la biblioteca de tipo libre parece estar asignando el byte de bajo orden de los valores Unicode en el rango que admite Terminus. Eso cae dentro de un rango que muestra la fuente como
n
(para "no existe ese carácter"):La solución rápida utiliza el
uxterm
script, que selecciona una fuente diferente y garantiza que se utilice la codificación UTF-8.Otras lecturas:
uxterm
- Emulador de terminal X para entornos Unicode (UTF-8)uxterm
)Lo anterior estaba hablando del parche xterm # 278 que tenía cuatro años en 2016. El desarrollo de xterm está en curso, y comenzando con el parche # 338 (finales de 2018) hay soporte para los tipos de letra TrueType. Aquí hay una captura de pantalla usando la configuración de recursos del OP del parche xterm # 342 (# 343 probablemente saldrá "pronto"):
Usando la
-report-fonts
opción, veo que cargó estos archivos de fuente (tratando negrita / cursiva como "lo mismo" de lo normal , y usando una segunda fuente para los caracteres especiales):El número real de fuentes depende de lo que quieras hacer. Al probar el rango existente de valores Unicode, puede usar un par de docenas de fuentes.
fuente
Soluciones de los comentarios:
uxterm
xterm -u8
-iso10646-1
Por ejemplo, para
xterm
(clase XXterm
) y la fuente Terminus, puede agregar a ~ / .XresourcesPara encontrar las fuentes y sus especificaciones de fuente instaladas en su sistema, vea los
/usr/share/fonts/*/*.dir
archivos. Después de editar~/.Xresources
, cárguelos conxrdb -merge ~/.Xresources
.fuente
Desafortunadamente, yo tampoco he podido obtener soporte Unicode configurado correctamente
xterm
. Como solución alternativa, terminé instalandorxvt
, que está disponible en rpmforge en distribuciones EL. También hay una versión unicode-256color del programa, que funciona muy bien para mí. Aquí está la descripción:ArchWiki tiene información útil como siempre sobre configuración y casos de uso.
fuente
rxvt-unicode
también uso¿Qué pasa con el uso de las fuentes TrueType como a continuación? No puedo obtener la
-fn *-*-...
opción estándar de trabajo con xterm, pero esto funciona perfectamente.Las fuentes de Inconsolata se pueden descargar aquí
fuente