
모든 유니 코드 문자를 인쇄하십시오. 터미널에서 가능한 모든 글리프를 참조하십시오
¹ 음 ... 모든 캐릭터는 아닙니다. 우리는 제어 코드 등을 원하지 않으므로 카테고리 C , M 및 Z 의 문자는 인쇄되지 않습니다. (스크립트 끝에서 일반 카테고리 값 표를 참조하십시오.)
시스템에 /usr/share/unicode/UnicodeData.txt 가없는 경우이 스크립트에 캐시 된 버전이 자동으로 사용됩니다. (v14.0.0, 2021 년 9 월 현재 Unicode.org에서 현재).
Fonttable은 모든 인쇄용 유니 코드 문자를 STDOUT로 보냅니다. 실제로 표시되는 문자는 시스템에 설치 한 글꼴 및 터미널을 사용하도록 설정된 경우에 따라 다릅니다.
선택적으로, -f fontname을 사용하여 특정 글꼴을 지정하여 디스플레이를 해당 글꼴에 정의 된 글리프로 제한 할 수 있습니다. (FontConfig 및 Sixel 그래픽이 필요합니다.)
참고 : Unicode Consortium의 "Unicodedata.txt"파일에는 CJK 문자가 나열되지 않지만 인접한 UNIHAN 데이터베이스에서 찾을 수 있습니다. 그것들을보고 싶다면 "-s"를 지정하십시오.
쉘 스크립트입니다. fonttable 다운로드하여 실행하십시오.
이것은 많은 청소년의 가장 좋아하는 8 비트 원 라이너에서 영감을 얻었습니다.

FORT=0TO255:?CHR$(T);:NEXT:RUN
이것은 모든 유효한 글리프를 볼 수있는 현대적인 동등한 방법입니다. 물론 유니 코드에는 거대한 주소 공간이 있고 코드 포인트의 작은 부분 만 유효한 문자이므로 간단한 루프를 사용할 수 없습니다. 해결책은 Unicodedata.txt 파일에 지정된 문자 만 인쇄하는 것입니다.
마찬가지로, 할당 된 통합 된 표식 범위의 모든 CJK 코드 포인트가 캐릭터는 아닙니다. Fonttable은 Unihan 데이터베이스가 존재하는 문자 만 인쇄합니다. (unihan_dictionaryindices.txt).
유니 코드 14 (2021) 현재, 나는 Unicodedata.txt에서 거의 32,000 개의 인쇄용 문자를 계산합니다. 또한 UNIHAN 데이터베이스에는 70,000 명 이상의 알려진 CJK 문자가 있습니다.
$ ./fonttable -s | awk '{print length($1)}'
31959
70805
(일부 사람들은 Proplist.txt를 사용하고 있으며 해당 코드 지점에 문자가 존재하는지 여부에 관계없이 할당 된 지역을 계산하기 때문에 훨씬 더 많은 숫자를 주장합니다.)
fonttable: Show every Unicode character in your terminal.
Usage: fonttable [ -csu ] [ START..END ] [ -f FONT [ -p POINTSIZE ]]
START..END
Show range from START to END, inclusive. (Hexadecimal).
START defaults to 0, END defaults to infinity.
Multiple ranges are allowed: fonttable 2590..f 1fb00..ff
-f FONT | --font-name FONT
Display every Unicode glyph which is defined in FONT as
a sixel image directly in the terminal.
-p POINTSIZE | --point-size POINTSIZE
Change the size of the font rendered by -f.
-d FONT | --defined-in FONT
Like -f, but displays using the default terminal font,
not graphics. Useful to quickly see character coverage.
-c | --cache
Use cached UnicodeData.txt embedded in this script.
Usually the cached version is only used if the file is
not in /usr/share/unicode/ or the current directory.
-s | --show-unihan
Also show CJK data from the Unihan database.
The default is to not show characters that Unicode has
designated as mappings to other standards.
-u | --unihan-cache
Use a cached copy of the list of valid CJK characters
instead of looking for Unihan_DictionaryIndices.txt.
UnicodeData.txt contains around 30,000 characters.
Unihan adds another 70,000.
-f / -font -name 옵션은 범위 옵션과 같지만 특정 글꼴에 정의 된 코드 포인트 만 표시합니다 (유니 코드에서 정상적이고 인쇄 가능한 문자로 표시). 예를 들어:
fonttable -f NotoSans
글꼴은 파일 이름으로 지정할 수 있습니다.
fonttable -f /usr/share/fonts/X11/misc/neep-iso10646-1-10x20.pcf.gz
Fonttable은 Sixel 그래픽을 사용하여 요청 된 글꼴을 그립니다. 특정 글꼴을 사용하여 표시되는 코드 포인트를 제한하지만 기본 글꼴에 표시하는 경우 -d FONT 옵션을 사용하십시오.
버그 : 현재 식스 핸들링은 매우 순진합니다. Sixels 그래픽을 지원하는 경우 터미널이 쿼리되지 않거나 각 문자가 많은 픽셀 수, 적절한 텍스트 색상이 있어야합니다.
컴퓨터에는 FontConfig가 있어야하며 Debian GNU/Linux 및 파생 상품에는 해당되지만 보편적으로는 그렇지 않을 수 있습니다. 또한 FontName은 FontConfig가 좋아하는 형식으로해야합니다. 예를 들어:
fonttable -f LTCCaslon # Works
fonttable -f "LTC Caslon" # Works
fonttable -f "LTC Caslon Swash Long Regular" # Works
그러나 발생하는 경우 :
fonttable -f Caslon # Does Not Work
fonttable -f "LTC Caslon Swash Long" # Does Not Work
이름이 확실하지 않은 경우 fc-list | grep -i caslon . 글꼴 파일 이름을 직접 지정할 수도 있습니다. 예를 들어:
fonttable ~/.local/share/fonts/P22CezannePro.ttf
일부 장식 및 전문가 글꼴은 유니 코드 코드 포인트에 대한 매핑이없는 글리프를 정의하거나 개인 용도로 맵핑됩니다. 이 문자는이 스크립트에서 찾을 수 없습니다. 예를 들어:
fonttable -f AdobeWoodType # Shows no glyphs!
그러나 약간의 노력으로 Fontforge와 같은 프로그램을 사용하여 이러한 글리프를 유니 코드 코드 포인트로 옮길 수 있습니다.

다른 터미널 프로그램과 글꼴로 인해 크게 다른 결과가 제공됩니다.
xxx todo
테스트 된 터미널이 이제 상당히 오래 되었으므로이 섹션은 다시 작성해야합니다.


그놈-말단 -3.38.3은 프리 타입을 사용하여 여러 글꼴을 사용합니다. , (Circled Numb 그놈-말단에 지나치게 넓은 글리프를 줄이거 나 잘라내라고 지시하는 설정은없는 것으로 보인다.

그놈 터미널에는 사용자 정착 가능한 환경 설정이 거의 없지만 좁은 대신 "모호한 폭"문자를 넓게 설정할 수 있습니다. 이것은 적어도이 고문 테스트에서 상당히 도움이됩니다.

그러나 모호한 폭을 넓게 설정하는 것은 만병 통치약이 아닙니다. 예를 들어, 글리프가 기본값과 매우 다른 종횡비의 글꼴로 대체되는 경우. 예를 들어, "DEC 터미널"글꼴이 선택 될 때 발생하는 일이 있습니다 (넓은 두 배나 높음).

이 기본 글꼴을 사용하면 모호한 width가 넓게 설정되어 있어도 글리프가 겹치고 있습니다.
그놈 -말단과 마찬가지로, Xterm은 항리아 (벡터) 글꼴이 선택 될 때 ( -fa Inconsolata -fs 18 ), 선택한 글꼴이 너무 제한되어 있다면 다른 시스템 글꼴로 채우면 여러 글꼴을 사용합니다. Xterm은 비트 맵 글꼴과도 작동 할 수 있지만 조금 까다 롭습니다.
-fn 사용하여 비트 맵 글꼴을 지정하는 경우 xterm은 단일 글꼴 만 사용합니다. 즉, 사용하는 유니 코드의 모든 섹션을 다루는 하나의 글꼴을 찾아야합니다. 이것은 항상 쉬운 것은 아닙니다.
"고정"이라고 불리는 기본 Xerm Font는 유니 코드 문자가 거의 없기 때문에 끔찍한 선택으로 보입니다. 그러나 Xterm은 기본적으로 라틴어 1 버전을 사용하기 때문입니다. "고정"의 유니 코드 (10646) 버전이 있으며, 이는 적용 범위에서 나쁘지 않습니다. "고정"은 또한 아시아 캐릭터의 넓은 버전으로 제공되며 Xterm은 자동으로 감지하고 사용합니다. 따라서 나쁜 선택은 아니며 사전 설치됩니다.
xterm -fn '*fixed-medium-r-normal--20*10646*'

Xterm은 이미 -fa 사용하여 항아리아 글꼴을 지정할 때 다른 글꼴을 사용하여 누락 된 글리프를 채 웁니다. (포인트 크기를 지정하려면 -fs 사용합니다). 참고 : antialiased는 Xterm이 Truetype, OpenType 및 Type 1과 같은 벡터 글꼴을 언급하는 방법입니다.
xterm 및 그놈-말단은 모두 프리 타입을 사용하여 항리아-말단을 렌더링하는 반면, 그놈-말단과 달리 Xterm은 문자 셀 경계를 강화하고 글리프가 겹치지 않도록합니다. 대신, 지나치게 넓은 글리프가 잘립니다. 이것이 더 낫지 않은지 아닌지는 맛의 문제입니다.

Xterm은 글꼴에 내장 된 색상보다는 사용자가 지정된 글꼴 색상을 사용하는 것입니다. 다시 말하지만, 이것은 맛의 문제이지만 요즘 대부분의 이모티콘 글꼴은 색상으로 만 설계되었으므로 특정 범위의 단일 색 글꼴은 오래된 것처럼 보이거나 글리프가 누락 될 수 있습니다.
fonttable을 실행할 때 어떤 글꼴이로드되었는지 확인하려면 xter를 실행하기 전에 xft_debug 환경 변수를 3으로 설정하십시오.
XFT_DEBUG=3 xterm -fa DroidSansMono -fs 24
XTREM에 요청한 글꼴 만 사용하도록 강요하려면 limitFontsets X Resource를 0으로 설정하여 그렇게 할 수 있습니다.
xterm -fa DroidSansMono -xrm "XTerm*vt100.limitFontsets: 0"
Xterm은 글꼴이 복식 버전 (CJK)으로도 사용할 수 있는지 자동으로 감지하려고 시도합니다. 찾지 못하면 -fd 사용하여 별도의 "복식 크기"글꼴을 지정할 수 있습니다.
xterm -fs 24 -fa DroidSansMono -fd DroidSansFallback -xrm "XTerm*vt100.limitFontsets: 0"
특정 글꼴이 설치되지 않은 경우 LimitFontsets : 0을 사용하더라도 대체 글꼴이 표시됩니다. 다시, xft_debug를 사용하여 무슨 일이 일어나고 있는지 알아낼 수 있습니다.
XFT_DEBUG=3 xterm -fs 24 -fa DroidSansMono -fd DroidSansFallback -xrm "XTerm*vt100.limitFontsets: 0"