Como posso encontrar o nome comum para um glifo específico?

21

Às vezes, gostaria de saber o nome de um glifo. Por exemplo, se eu vir , posso querer saber se é um hífen - , um en-dash , um em-dash ou um símbolo de menos . Existe uma maneira que eu possa copiar e colar isso em um terminal para ver o que é?

Não tenho certeza se meu sistema conhece os nomes comuns desses glifos, mas certamente há algumas informações (parciais) disponíveis, como em /usr/share/X11/locale/en_US.UTF-8/Compose . Por exemplo,

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

Outro exemplo de glifo:

por Sparhawk 27.04.2015 / 13:33

5 respostas

30

Experimente o utilitário unicode :

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

Ou o utilitário uconv do pacote ICU :

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

Você também pode obter informações por meio do utilitário recode :

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

203D         point exclarrogatif

Ou com o Perl:

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

Observe que esses dados fornecem informações sobre os caracteres que compõem esse glifo e não sobre o glifo como um todo. Por exemplo, para (e com combinação de acento agudo):

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

Diferente do caractere é autônomo:

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

Você pode pedir a uconv para recombinar esses (para aqueles que têm um formulário combinado):

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

(é uma forma combinada, mas não b́).

    
por 27.04.2015 / 14:08
5

A melhor maneira que eu sei é através do uniprops do Perl. Ele vem com o módulo Unicode::Tussle do Perl. Você pode instalá-lo com

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

Você pode, então, executá-lo em qualquer glifo que queira testar:

$ 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                                      
por 27.04.2015 / 14:01
5

Você pode usar o Perl função viacode do nome de marca :

$ printf ‽ | perl -Mcharnames=:full -CLS -nle 'print charnames::viacode(ord)'
INTERROBANG
$ printf                                     
por 27.04.2015 / 13:54
4

Você pode usar unicode , que também gera mais algumas informações do que apenas o nome:

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

Crie um script bash com isto:

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

Nomeie como você deseja, por exemplo, namechar e atribua permissões de execução.

Agora, você pode ligar, por exemplo:

./namechar @

e o resultado será:

COMMERCIAL AT
    
por 27.04.2015 / 14:02