Wie finde ich den gebräuchlichen Namen für eine bestimmte Glyphe?

21

Manchmal möchte ich den Namen einer Glyphe kennen. Wenn ich zum Beispiel sehe , möchte ich vielleicht wissen, ob es sich um einen Bindestrich -, einen Bindestrich , einen Bindestrich oder ein Minuszeichen handelt . Gibt es eine Möglichkeit, dies in ein Terminal zu kopieren, um zu sehen, was es ist?

Ich bin mir nicht sicher, ob mein System die gebräuchlichen Namen dieser Glyphen kennt, aber es sind sicherlich einige (Teil-) Informationen verfügbar, wie zum Beispiel in /usr/share/X11/locale/en_US.UTF-8/Compose. Beispielsweise,

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

Ein weiteres Beispiel Glyphe: 🐄.

Sparhawk
quelle

Antworten:

30

Probieren Sie das Unicode- Dienstprogramm aus:

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

Oder das uconvDienstprogramm aus dem ICU- Paket:

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

Sie können Informationen auch über das recodeDienstprogramm abrufen:

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

203D         point exclarrogatif

Oder mit Perl:

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

Beachten Sie, dass diese Informationen zu den Zeichen enthalten, aus denen dieses Symbol besteht, nicht zu dem Symbol als Ganzes. Zum Beispiel für (e mit der Kombination von akutem Akzent):

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

Anders als der eigenständige Charakter:

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

Sie können uconvnach einer Neukombination fragen (für diejenigen, die eine kombinierte Form haben):

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

(é hat eine kombinierte Form, aber nicht b́).

Stéphane Chazelas
quelle
Was ist unicode? Ich scheine das nicht installiert zu haben (und kann es in den Arch Linux-Repos nicht finden). Was in aller Welt ist das auch exclarrogatif? [BEARBEITEN: Ich bekomme das auch hier, obwohl mein System nicht französisch ist.]
Sparhawk
2
@Sparhawk, Kontraktion von exclamatifund interrogatif. recodewurde in den frühen 80ern von einem französisch-kanadischen Typ geschrieben.
Stéphane Chazelas
2
@Sparhawk kassiopeia.juls.savba.sk/~garabik/software/unicode - verfügbar als unicodePaket unter Debian, keine Ahnung über das Packen unter Arch.
Gilles 'SO- hör auf böse zu sein'
1
@ PaŭloEbermann Warum ist printf besser als echo? . Nachdem Sie gefragt haben, wird von Ihnen erwartet, dass Sie die gesamte Antwort lesen. Es wird einen Test geben.
Terdon
1
@Sparhawk %sist wie ein Platzhalter, der als Formatbezeichner (oder Konvertierungsbezeichner) bezeichnet wird. printf ersetzt es durch die nachfolgenden Argumente und behandelt es als Zeichenfolge (im Gegensatz beispielsweise zu einer Zahl) (im Allgemeinen so, wie Sie es mit der printf()Funktion von C erwarten würden ). Siehe die Dokumentation ( pubs.opengroup.org/onlinepubs/9699919799//basedefs/… ).
muru
5

Ich kenne mich am besten mit Perl aus uniprops. Es kommt mit Perls Unicode::TussleModul. Sie können es mit installieren

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

Sie können es dann auf jedem Glyphen ausführen, den Sie testen möchten:

$ 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
terdon
quelle
unipropsverwendet intern auch charnames :: viacode.
Cuonglm
@cuonglm ja, aber das Tussle-Modul enthält alle Arten von ausgefallenen Werkzeugen und unipropsist weitaus einfacher zu tippen, als das Modul explizit aufzurufen. Es enthält auch mehr Informationen als nur den Namen.
Terdon
5

Sie können die Perl- Viacode-Funktion aus dem charnames- Modul verwenden:

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

charnames wurde erstmals mit Perl v5.6.0 veröffentlicht


Da Perl 6 an diesem Weihnachtstag produktionsbereit sein wird, ist es erwähnenswert, dass es die beste Unterstützung für Unicode-Zeichen bietet, die ich je gesehen habe. Sie müssen nur die uniname Methode / Routine aufrufen :

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

(e mit Kombination von Akut) und eigenständigem éCharakter bieten Ihnen beide:

# 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

( .uninameist die Abkürzung für $_.uniname)

cuonglm
quelle
4

Sie können Folgendes verwenden unicode, das auch mehr Informationen als nur den Namen ausgibt:

# unicode –
U+2013 EN DASH
UTF-8: e2 80 93  UTF-16BE: 2013  Decimal: &#8211;
–
Category: Pd (Punctuation, Dash)
Bidi: ON (Other Neutrals)
Marco
quelle
Was ist unicode? Ich scheine das nicht installiert zu haben (und kann es in den Arch Linux-Repos nicht finden).
Sparhawk
3
@Sparhawk auf meinem Debian ist nur ein Python-Skript, das vom unicodePaket installiert wird . Sie sollten es bekommen können, indem Sie das Quellpaket von den Debian-Repos herunterladen .
Terdon
1

Erstellen Sie ein Bash-Skript mit:

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

Nennen Sie es beispielsweise so, wie Sie möchten, namecharund geben Sie ihm Ausführungsberechtigungen.

Jetzt können Sie zum Beispiel anrufen:

./namechar @

und das Ergebnis wird sein:

COMMERCIAL AT
jcbermu
quelle
Dies ist gut, passt aber nur zu einer Reihe von Zeichen, nicht zum vollständigen Unicode. Beispielsweise schlägt es fehl 🐄und erzeugt wiederholte Ergebnisse für . Der letzte könnte durch Verrohrung repariert werden | sort -u.
Terdon
Ja, @terdon ist richtig. (Deshalb habe ich in der Frage "teilweise" gesagt.) Diese Datei enthält nur Glyphen, die dem ComposeSchlüssel zugeordnet sind.
Sparhawk