有时,我想知道字形的名称。例如,如果我看到−
,我可能想知道它是连字符-
、短破折号–
、长破折号—
还是减号−
。有没有办法可以将其复制粘贴到终端中以查看它是什么?
我不确定我的系统是否知道这些字形的通用名称,但肯定有一些(部分)信息可用,例如在/usr/share/X11/locale/en_US.UTF-8/Compose
.例如,
<Multi_key> <exclam> <question> : "‽" U203D # INTERROBANG
另一个字形示例:
答案1
尝试一下统一码公用事业:
$ unicode ‽
U+203D INTERROBANG
UTF-8: e2 80 bd UTF-16BE: 203d Decimal: ‽
‽
Category: Po (Punctuation, Other)
Bidi: ON (Other Neutrals)
或者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
请注意,这些信息提供了有关构成该字形的字符的信息,而不是整个字形的信息。例如,for é
(e 结合锐音符号):
$ 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́)。
答案2
你可以使用 Perl来自 charnames 的 viacode 函数模块:
$ printf ‽ | perl -Mcharnames=:full -CLS -nle 'print charnames::viacode(ord)'
INTERROBANG
$ printf
答案3
我知道的最好的方法是通过 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
答案4
使用以下命令创建 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