Belirli bir glif için ortak adı nasıl bulabilirim?


21

Bazen bir glifin adını bilmek isterdim. Örneğin, görürsem , kısa çizgi -, en çizgi , em çizgi veya eksi simgesi olup olmadığını bilmek isteyebilirim . Ne olduğunu görmek için bir terminale kopyalayıp yapıştırabileceğim bir yol var mı?

Sistemimin bu gliflerin ortak adlarını bildiğinden emin değilim, ancak içinde olduğu gibi kesinlikle bazı (kısmi) bilgiler var /usr/share/X11/locale/en_US.UTF-8/Compose. Örneğin,

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

Başka bir örnek glif: 🐄.

Yanıtlar:


30

Unicode yardımcı programını deneyin :

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

Veya YBÜ paketindeki uconvyardımcı program :

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

Ayrıca recodeyardımcı program aracılığıyla bilgi alabilirsiniz :

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

203D         point exclarrogatif

Veya Perl ile:

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

Bunların, bir bütün olarak glif hakkında değil, o glifi oluşturan karakterler hakkında bilgi verdiğine dikkat edin. Örneğin, (örneğin akut aksanı birleştirerek):

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

Bağımsız é karakterinden farklı:

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

Bunları uconvyeniden birleştirmeyi isteyebilirsiniz (birleştirilmiş forma sahip olanlar için):

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

(é birleştirilmiş bir biçime sahiptir, ancak b́ değildir).


Nedir unicode? Yüklü olarak görünmüyorum (ve Arch Linux deposunda bulamıyorum). Ayrıca, dünyadaki nedir exclarrogatif? [EDIT: Benim sistemim Fransızca olmasa da, onu da burada
buluyorum

2
@Sparhawk, daralma exclamatifve interrogatif. recode80'li yılların başlarında Fransız-Kanadalı bir adam tarafından yazılmıştır.
Stéphane Chazelas

2
@Sparhawk kassiopeia.juls.savba.sk/~garabik/software/unicode - unicodeDebian paketi olarak mevcut , Arch üzerinde paketleme hakkında hiçbir fikrim yok.
Gilles 'SO- kötülük olmayı'

1
@ PaŭloEbermann Neden printf yankıdan daha iyidir? . Şimdi sordun, cevabın tamamını okumayı umuyorsun. Bir test olacak.
terdon

1
@Sparhawk %s, format belirticisi (veya dönüşüm belirticisi) olarak adlandırılan bir yer tutucu gibidir. printf, onu bir argüman olarak değiştirir, onu bir dizge olarak görür (örneğin, bir sayının aksine) (genellikle C'nin printf()işlevinden nasıl beklediğiniz ). Dokümanlara bakın ( pubs.opengroup.org/onlinepubs/9699919799//basedefs/… ).
muru

5

Bildiğim en iyi yol Perl’ler uniprops. Perl'in Unicode::Tusslemodülü ile geliyor . İle yükleyebilirsiniz

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

Daha sonra test etmek istediğiniz herhangi bir glifte çalıştırabilirsiniz:

$ 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

unipropsayrıca dahili olarak :: charnames :: viacode kullanır.
cuonglm

@ cunonglm evet, ancak Tussle modülü her çeşit fantezi aleti içermektedir ve yazılması, modülü unipropsaçıkça çağırmaktan çok daha kolaydır. Aynı zamanda sadece isimden daha fazla bilgi sağlar.
terdon

5

Charnames modülünden Perl viacode işlevini kullanabilirsiniz :

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

charnames ilk Perl v5.6.0 ile piyasaya sürüldü


İle Perl 6 bu Noel gününde üretim hazır olacak o Unicode karakterleri için en iyi desteği olduğunda gördüğüm beri, 's değerinde, burada bahsettiğimiz. Sadece uniname method / rutini aramanız gerekir :

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

(e akut aksanı birleştirerek) ve bağımsız ékarakterleri size sunar:

# 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

( .uninameiçin steno $_.uniname)


4

unicodeAyrıca, yalnızca addan biraz daha fazla bilgi veren , kullanabilirsiniz :

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

Nedir unicode? Yüklü olarak görünmüyorum (ve Arch Linux deposunda bulamıyorum).
Sparhawk

3
Debian'ımda @Sparhawk, sadece unicodepaket tarafından yüklenen bir Python betiği var . Kaynak paketi Debian depolarından indirerek elde edebilmelisin .
terdon

1

Bununla bir bash betiği oluşturun:

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

Örneğin istediğiniz şekilde adlandırın namecharve çalıştırma izinlerini verin.

Şimdi, örneğin arayabilirsiniz:

./namechar @

ve sonuç olacaktır:

COMMERCIAL AT

Bu iyidir, ancak tam unicode değil, yalnızca bir karakter kümesi ile eşleşir. Örneğin, başarısız olur 🐄ve için tekrarlanan sonuçlar üretir . Sonuncusu, boru ile sabitlenebilir | sort -u.
terdon

Evet, @ terdon doğru. (Bu yüzden soruda “kısmi” dedim.) Bu dosya sadece Composeanahtara eşlenmiş glifler içeriyor .
Sparhawk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.