Come posso trovare il nome comune per un glifo particolare?


21

A volte, vorrei sapere il nome di un glifo. Ad esempio, se vedo , potrei voler sapere se si tratta di un trattino -, un trattino , un trattino o un simbolo meno . C'è un modo in cui posso copiarlo e incollarlo in un terminale per vedere di cosa si tratta?

Non sono sicuro che il mio sistema conosca i nomi comuni di questi glifi, ma ci sono sicuramente alcune informazioni (parziali) disponibili, come in /usr/share/X11/locale/en_US.UTF-8/Compose. Per esempio,

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

Un altro esempio di icona: 🐄.

Risposte:


30

Prova l' utilità Unicode :

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

O l' uconvutilità dal pacchetto ICU :

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

Puoi anche ottenere informazioni tramite l' recodeutilità:

$ 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

Nota che quelli forniscono informazioni sui personaggi che compongono quel glifo, non sul glifo nel suo insieme. Ad esempio, per (e con l'accento acuto combinato):

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

Diverso dal personaggio é autonomo:

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

Puoi chiedere uconvdi ricombinare quelli (per quelli che hanno una forma combinata):

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

(é ha una forma combinata, ma non b́).


Che cosa è unicode? Non sembra averlo installato (e non lo trovo nei repository di Arch Linux). Inoltre, che diavolo è exclarrogatif? [EDIT: lo capisco anche qui, anche se il mio sistema non è francese.]
Sparhawk,

2
@Sparhawk, contrazione di exclamatife interrogatif. recodeè stato scritto da un ragazzo franco-canadese nei primi anni '80.
Stéphane Chazelas,

2
@Sparhawk kassiopeia.juls.savba.sk/~garabik/software/unicode - disponibile come unicodepacchetto su Debian, nessuna idea sul packaging su Arch.
Gilles 'SO- smetti di essere malvagio' il

1
@ PaŭloEbermann Perché printf è meglio dell'eco? . Ora che hai chiesto, dovresti leggere l'intera risposta. Ci sarà un test.
terdon

1
@Sparhawk %sè come un segnaposto, chiamato identificatore di formato (o identificatore di conversione). printf lo sostituirà con gli argomenti successivi, trattandolo come una stringa (al contrario di un numero, per esempio) (generalmente come ci si aspetterebbe con la printf()funzione di C ). Vedi i documenti ( pubs.opengroup.org/onlinepubs/9699919799//basedefs/… ).
muru,

5

Il modo migliore che conosco è attraverso Perl's uniprops. Viene fornito con il Unicode::Tusslemodulo Perl . Puoi installarlo con

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

È quindi possibile eseguirlo su qualsiasi glifo che si desidera testare:

$ 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

unipropsutilizza internamente anche i nomi dei nomi :: viacode.
cuonglm,

@cuonglm sì, ma il modulo Tussle include tutti i tipi di strumenti fantasiosi ed unipropsè molto, molto più facile da scrivere che chiamare esplicitamente il modulo. Fornisce inoltre maggiori informazioni oltre al solo nome.
terdon

5

È possibile utilizzare la funzione codice via Perl dal modulo charnames :

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

charnames è stato inizialmente rilasciato con perl v5.6.0


Con Perl 6 sarà pronto per la produzione in questo giorno di Natale, vale la pena menzionarlo qui, da quando ha il miglior supporto per i personaggi Unicode che io abbia mai visto. Devi solo chiamare il metodo / routine uniname :

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

(e con combinazione di accento acuto) e écarattere autonomo ti danno entrambi:

# 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

( .uninameè l'abbreviazione di $_.uniname)


4

È possibile utilizzare unicode, che fornisce anche alcune informazioni in più rispetto al solo nome:

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

Che cosa è unicode? Non sembra averlo installato (e non lo trovo nei repository di Arch Linux).
Sparhawk,

3
@Sparhawk sul mio Debian, è solo uno script Python installato dal unicodepacchetto. Dovresti essere in grado di ottenerlo scaricando il pacchetto sorgente dai repository Debian .
terdon

1

Crea uno script bash con questo:

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

Nominalo come vuoi, per esempio, namechare dagli le autorizzazioni di esecuzione.

Ora puoi chiamare per esempio:

./namechar @

e il risultato sarà:

COMMERCIAL AT

Questo è buono ma corrisponde solo a un gruppo di caratteri, non a unicode completo. Ad esempio, non riesce 🐄e produce risultati ripetuti per . L'ultimo potrebbe essere risolto tramite il piping through | sort -u.
terdon

Sì, @terdon è corretto. (Ecco perché ho detto "parziale" nella domanda.) Questo file contiene solo glifi mappati alla Composechiave.
Sparhawk,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.