특정 글리프의 공통 이름을 어떻게 찾을 수 있습니까?


21

때로는 글리프의 이름을 알고 싶습니다. 예를 들어, 내가 볼 경우 하이픈 -, 엔 대시 , 엠 대시 또는 빼기 기호 인지 알고 싶습니다 . 이것을 터미널에 복사하여 붙여 넣을 수있는 방법이 있습니까?

내 시스템이 이러한 글리프의 공통 이름을 알고 있는지 확실하지 않지만에서와 같이 (일부) 일부 정보가 확실히 있습니다 /usr/share/X11/locale/en_US.UTF-8/Compose. 예를 들어

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

다른 글리프 예 : 🐄.

답변:


30

유니 코드 유틸리티를 사용해보십시오 .

$ unicode ‽
U+203D INTERROBANG
UTF-8: e2 80 bd  UTF-16BE: 203d  Decimal: &#8253;
‽
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́는 아닙니다).


무엇입니까 unicode? 설치되어 있지 않은 것 같습니다 (아키 리눅스 저장소에서 찾을 수 없음). 또한 지구상에서 무엇 exclarrogatif입니까? [편집 : 저의 시스템도 프랑스어가 아니더라도 여기도 있습니다.]
Sparhawk

2
@Sparhawk, exclamatif및 수축 interrogatif. recode80 년대 초 프랑스계 캐나다인에 의해 쓰여졌습니다.
Stéphane Chazelas

2
@Sparhawk kassiopeia.juls.savba.sk/~garabik/software/unicodeunicode데비안 에서 패키지 로 제공되며 아치에서의 포장에 대해서는 전혀 모릅니다.
Gilles 'SO- 악한 중지'

1
@ PaŭloEbermann 에코보다 printf가 더 좋은 이유는 무엇입니까? . 이제 당신이 물었다면, 당신은 전체 답을 읽을 것으로 기대됩니다. 시험이있을 것입니다.
terdon

1
@Sparhawk %s은 형식 지정자 (또는 변환 지정자)라고하는 자리 표시 자와 같습니다. printf는 그것을 다음의 인수로 대체하여 문자열로 취급합니다 (예를 들어 숫자가 아닌) (일반적으로 C의 printf()기능으로 기대하는 방식 ). 문서 ( pubs.opengroup.org/onlinepubs/9699919799//basedefs/… )를 참조하십시오 .
muru

5

내가 아는 가장 좋은 방법은 Perl 's를 이용하는 것 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

uniprops또한 내부적으로 charnames :: viacode를 사용합니다.
cuonglm

@cuonglm 예. 그러나 Tussle 모듈에는 모든 종류의 멋진 도구가 포함되어 uniprops있으며 모듈을 명시 적으로 호출하는 것보다 훨씬 쉽게 입력 할 수 있습니다. 또한 이름보다 더 많은 정보를 제공합니다.
terdon

5

charnames 모듈 에서 Perl 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에서 처음 릴리스되었습니다.


함께 펄 (6) 이 크리스마스 날에 생산 준비가 될 것입니다은 유니 코드 문자에 대한 최선의 지원이있을 때 내가 본 이후로, 그것의 가치는 여기 언급. uniname 메소드 / 루틴 만 호출 하면됩니다 .

$ 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)


4

unicode이름을 사용하는 것보다 더 많은 정보를 출력하는을 사용할 수 있습니다 .

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

무엇입니까 unicode? 설치되어 있지 않은 것 같습니다 (아키 리눅스 저장소에서 찾을 수 없음).
Sparhawk

3
내 데비안에서 @Sparhawk는 unicode패키지에 의해 설치된 Python 스크립트 일뿐 입니다. 데비안 저장소 에서 소스 패키지를 다운로드하여 얻을 수 있어야합니다 .
terdon

1

이것을 사용하여 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

이것은 좋지만 전체 유니 코드가 아닌 문자의 서스펜드와 만 일치합니다. 예를 들어에 실패하고에 🐄대한 반복 결과가 생성됩니다 . 를 통해 파이핑하여 마지막을 고정시킬 수 있습니다 | sort -u.
terdon

예, @terdon이 정확합니다. (그래서 내가 질문에서 "부분"이라고 말한 이유입니다.)이 파일에는 Compose키에 매핑 된 글리프 만 포함되어 있습니다 .
Sparhawk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.