時々、グリフの名前を知りたいです。たとえば、−
、ハイフンであるかどうか知りたい-
、アンダッシュ–
、全角ダッシュ—
、またはマイナス記号−
。これをコピーしてターミナルに貼り付けて、それが何であるかを確認する方法はありますか?
私のシステムがこれらのグリフの共通名を知っているかどうかはわかりませんが、/usr/share/X11/locale/en_US.UTF-8/Compose
。例えば、
<Multi_key> <exclam> <question> : "‽" U203D # INTERROBANG
別のグリフの例:????
。
nicode ユーティリティを試してください:
$ unicode ‽
U+203D INTERROBANG
UTF-8: e2 80 bd UTF-16BE: 203d Decimal: ‽
‽
Category: Po (Punctuation, Other)
Bidi: ON (Other Neutrals)
または [〜#〜] icu [〜#〜] パッケージのuconv
ユーティリティ:
$ printf %s ‽ | uconv -x any-name
\N{INTERROBANG}
recode
ユーティリティを介して情報を取得することもできます:
$ printf %s ‽ | recode ..dump
UCS2 Mne Description
203D point exclarrogatif
またはPerlを使用:
$ printf %s ‽ | Perl -CLS -Mcharnames=:full -lne 'print charnames::viacode(ord) for /./g'
INTERROBANG
それらは、グリフ全体ではなく、そのグリフを構成する文字に関する情報を提供することに注意してください。たとえば、é
(アキュートアクセントを組み合わせた場合):
$ printf é | uconv -x any-name
\N{LATIN SMALL LETTER E}\N{COMBINING ACUTE ACCENT}
スタンドアロンのéキャラクターとは異なります。
$ printf é | uconv -x any-name
\N{LATIN SMALL LETTER E WITH ACUTE}
これらを再結合するようにuconv
に要求できます(結合された形式の場合):
$ printf 'e\u0301b\u0301' | uconv -x '::nfc;::name;'
\N{LATIN SMALL LETTER E WITH ACUTE}\N{LATIN SMALL LETTER B}\N{COMBINING ACUTE ACCENT}
(éには結合された形式がありますが、b́はありません)。
あなたはPerlを使うことができます charnamesからviacode関数 モジュール:
$ printf ‽ | Perl -Mcharnames=:full -CLS -nle 'print charnames::viacode(ord)'
INTERROBANG
$ printf ???? | Perl -Mcharnames=:full -CLS -nle 'print charnames::viacode(ord)'
COW
charnames はPerl v5.6.0で最初にリリースされました
Perl 6 は、このクリスマスの日に生産準備が整うので、ここで言及することは価値があります。これは、これまでに見たUnicode文字のサポートが最も優れているためです。 niname method/routineを呼び出すだけです:
$ printf ‽ | Perl6 -ne 'say .uniname'
INTERROBANG
é
(アキュートアクセントを組み合わせたもの)とスタンドアロンのé
文字の両方を使用すると、次のようになります。
# 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
は$_.uniname
の省略形です)
私が知る最良の方法は、Perlのuniprops
を使用することです。 Perlの Unicode::Tussle
モジュール。あなたはそれをインストールすることができます
Sudo Perl -MCPAN -e 'install Unicode::Tussle'
次に、テストするグリフで実行できます。
$ 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
unicode
を使用することもできます。これは、名前だけではなく、さらに多くの情報を出力します。
# unicode –
U+2013 EN DASH
UTF-8: e2 80 93 UTF-16BE: 2013 Decimal: –
–
Category: Pd (Punctuation, Dash)
Bidi: ON (Other Neutrals)
これでbashスクリプトを作成します。
#!/bin/bash
awk -F ":" '{print $2}' /usr/share/X11/locale/en_US.UTF-8/Compose | grep "$1" | awk -F "#" '{print $2}'
たとえば、namechar
など、必要に応じて名前を付け、実行権限を付与します。
これで、たとえば次のように呼び出すことができます。
./namechar @
結果は次のようになります。
COMMERCIAL AT