如何找到特定字形的通用名称?

如何找到特定字形的通用名称?

有时,我想知道字形的名称。例如,如果我看到,我可能想知道它是连字符-、短破折号、长破折号还是减号。有没有办法可以将其复制粘贴到终端中以查看它是什么?

我不确定我的系统是否知道这些字形的通用名称,但肯定有一些(部分)信息可用,例如在/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: &#8253;
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

相关内容