¿Cómo puedo encontrar el nombre común para un glifo en particular?


21

A veces, me gustaría saber el nombre de un glifo. Por ejemplo, si veo , me gustaría saber si se trata de un guión -, un guión , un guión o un símbolo menos . ¿Hay alguna forma de copiar y pegar esto en una terminal para ver qué es?

No estoy seguro de si mi sistema conoce los nombres comunes de estos glifos, pero ciertamente hay alguna información (parcial) disponible, como en /usr/share/X11/locale/en_US.UTF-8/Compose. Por ejemplo,

<Multi_key> <exclam> <question>         : "‽"   U203D # INTERROBANG

Otro ejemplo glifo: 🐄.

Respuestas:


30

Prueba la utilidad Unicode :

$ unicode ‽
U+203D INTERROBANG
UTF-8: e2 80 bd  UTF-16BE: 203d  Decimal: &#8253;
‽
Category: Po (Punctuation, Other)
Bidi: ON (Other Neutrals)

O la uconvutilidad del paquete ICU :

$ printf %s ‽ | uconv -x any-name
\N{INTERROBANG}

También puede obtener información a través de la recodeutilidad:

$ printf %s ‽ | recode ..dump
UCS2   Mne   Description

203D         point exclarrogatif

O con Perl:

$ printf %s ‽ | perl -CLS -Mcharnames=:full -lne 'print charnames::viacode(ord) for /./g'
INTERROBANG

Tenga en cuenta que estos dan información sobre los caracteres que componen ese glifo, no sobre el glifo en su conjunto. Por ejemplo, para (e con la combinación de acento agudo):

$ printf é | uconv -x any-name
\N{LATIN SMALL LETTER E}\N{COMBINING ACUTE ACCENT}

A diferencia del personaje independiente é:

$ printf é | uconv -x any-name
\N{LATIN SMALL LETTER E WITH ACUTE}

Puede solicitar uconvrecombinarlos (para aquellos que tienen una forma combinada):

$ printf 'e\u0301b\u0301' | uconv -x '::nfc;::name;'
\N{LATIN SMALL LETTER E WITH ACUTE}\N{LATIN SMALL LETTER B}\N{COMBINING ACUTE ACCENT}

(é tiene una forma combinada, pero no b́).


¿Qué es unicode? Parece que no tengo eso instalado (y no puedo encontrarlo en los repositorios de Arch Linux). Además, ¿qué demonios es exclarrogatif? [EDITAR: también lo entiendo aquí, aunque mi sistema no es francés.]
Sparhawk

2
@Sparhawk, contracción de exclamatify interrogatif. recodefue escrito por un chico franco-canadiense a principios de los 80.
Stéphane Chazelas

2
@Sparhawk kassiopeia.juls.savba.sk/~garabik/software/unicode - disponible como unicodepaquete en Debian, no tengo idea sobre el empaque en Arch.
Gilles 'SO- deja de ser malvado'

1
@ PaŭloEbermann ¿ Por qué es printf mejor que echo? . Ahora que lo preguntaste, se espera que leas la respuesta completa. Habrá un examen.
terdon

1
@Sparhawk %ses como un marcador de posición, llamado especificador de formato (o especificador de conversión). printf lo reemplazará con los argumentos siguientes, tratándolo como una cadena (en lugar de un número, por ejemplo) (en general, como esperaría con la printf()función de C ). Consulte los documentos ( pubs.opengroup.org/onlinepubs/9699919799//basedefs/… ).
muru

5

La mejor manera que conozco es a través de Perl's uniprops. Viene con el Unicode::Tusslemódulo de Perl . Puedes instalarlo con

sudo perl -MCPAN -e 'install Unicode::Tussle'

Luego puede ejecutarlo en cualquier glifo que desee probar:

$ uniprops  ‽
U+203D ‹‽› \N{INTERROBANG}
    \pP \p{Po}
    All Any Assigned InPunctuation Punct Is_Punctuation Common Zyyy Po P
       General_Punctuation Gr_Base Grapheme_Base Graph GrBase Other_Punctuation
       Pat_Syn Pattern_Syntax PatSyn Print Punctuation STerm Term
       Terminal_Punctuation Unicode X_POSIX_Graph X_POSIX_Print X_POSIX_Punct

$ uniprops  🐄
U+1F404 ‹🐄› \N{COW}
    \pS \p{So}
    All Any Assigned InMiscPictographs Common Zyyy So S Gr_Base Grapheme_Base Graph
       GrBase Misc_Pictographs Miscellaneous_Symbols_And_Pictographs Other_Symbol
       Print Symbol Unicode X_POSIX_Graph X_POSIX_Print

unipropstambién usa charnames :: viacode internamente.
cuonglm

@cuonglm sí, pero el módulo Tussle incluye todo tipo de herramientas sofisticadas y unipropses mucho, mucho más fácil de escribir que llamar explícitamente al módulo. También proporciona más información que solo el nombre.
terdon

5

Puede usar la función Perl viacode del módulo charnames :

$ printf ‽ | perl -Mcharnames=:full -CLS -nle 'print charnames::viacode(ord)'
INTERROBANG
$ printf 🐄 | perl -Mcharnames=:full -CLS -nle 'print charnames::viacode(ord)'
COW

charnames se lanzó por primera vez con perl v5.6.0


Con Perl 6 estará listo para la producción en este día de Navidad, vale la pena mencionarlo aquí, ya que tiene el mejor soporte para personajes Unicode que he visto. Solo necesita llamar al método / rutina uniname :

$ printf ‽ | perl6 -ne 'say .uniname'
INTERROBANG

(e combinando acento agudo) y écarácter independiente , ambos le dan:

# e with combining acute accent
$ printf é | perl6 -ne 'say .uniname'
LATIN SMALL LETTER E WITH ACUTE

# standalone é
$ printf é | perl6 -ne 'say .uniname'
LATIN SMALL LETTER E WITH ACUTE

( .uninamees la abreviatura de $_.uniname)


4

Puede usar unicode, que también genera más información que solo el nombre:

# unicode –
U+2013 EN DASH
UTF-8: e2 80 93  UTF-16BE: 2013  Decimal: &#8211;
–
Category: Pd (Punctuation, Dash)
Bidi: ON (Other Neutrals)

¿Qué es unicode? Parece que no tengo eso instalado (y no puedo encontrarlo en los repositorios de Arch Linux).
Sparhawk

3
@Sparhawk en mi Debian, es solo un script Python instalado por el unicodepaquete. Debería poder obtenerlo descargando el paquete fuente de los repositorios de Debian .
terdon

1

Crea un script bash con esto:

#!/bin/bash
awk -F ":" '{print $2}' /usr/share/X11/locale/en_US.UTF-8/Compose | grep "$1" | awk -F "#" '{print $2}'

Póngale el nombre que desee, por ejemplo, namechary dele permisos de ejecución.

Ahora, puede llamar por ejemplo:

./namechar @

y el resultado será:

COMMERCIAL AT

Esto es bueno, pero solo coincide con un conjunto de caracteres, no unicode completo. Por ejemplo, falla 🐄y produce resultados repetidos para . El último podría arreglarse mediante tubería | sort -u.
terdon

Sí, @terdon es correcto. (Es por eso que dije "parcial" en la pregunta). Este archivo solo contiene glifos asignados a la Composeclave.
Sparhawk
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.