GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Herausfinden, welche Zeichen eine bestimmte Schriftart unterstützt

Der fontconfig Befehle können die Glyphenliste als kompakte Liste von Bereichen ausgeben, zB:

$ fc-match --format='%{charset}\n' OpenSans
20-7e a0-17f 192 1a0-1a1 1af-1b0 1f0 1fa-1ff 218-21b 237 2bc 2c6-2c7 2c9
2d8-2dd 2f3 300-301 303 309 30f 323 384-38a 38c 38e-3a1 3a3-3ce 3d1-3d2 3d6
400-486 488-513 1e00-1e01 1e3e-1e3f 1e80-1e85 1ea0-1ef9 1f4d 2000-200b
2013-2015 2017-201e 2020-2022 2026 2030 2032-2033 2039-203a 203c 2044 2070
2074-2079 207f 20a3-20a4 20a7 20ab-20ac 2105 2113 2116 2120 2122 2126 212e
215b-215e 2202 2206 220f 2211-2212 221a 221e 222b 2248 2260 2264-2265 25ca
fb00-fb04 feff fffc-fffd

Verwenden Sie fc-query für .ttf Datei und fc-match für einen installierten Schriftnamen.

Dies erfordert wahrscheinlich keine Installation zusätzlicher Pakete und keine Übersetzung einer Bitmap.

Verwenden Sie fc-match --format='%{file}\n' um zu prüfen, ob die richtige Schriftart gefunden wird.


Das X-Programm xfd können dies tun.Um alle Zeichen für die Schriftart "DejaVu Sans Mono" anzuzeigen, führen Sie Folgendes aus:

xfd -fa "DejaVu Sans Mono"

Es ist im Paket x11-utils unter Debian/Ubuntu, xorg-x11-apps unter Fedora/RHEL und xorg-xfd unter Arch Linux enthalten.


Hier ist eine Methode, die die Python-Bibliothek fontTools verwendet (die Sie mit so etwas wie pip install fonttools installieren können ):

#!/usr/bin/env python
from itertools import chain
import sys

from fontTools.ttLib import TTFont
from fontTools.unicode import Unicode

with TTFont(
    sys.argv[1], 0, allowVID=0, ignoreDecompileErrors=True, fontNumber=-1
) as ttf:
    chars = chain.from_iterable(
        [y + (Unicode[y[0]],) for y in x.cmap.items()] for x in ttf["cmap"].tables
    )
    if len(sys.argv) == 2:  # print all code points
        for c in chars:
            print(c)
    elif len(sys.argv) >= 3:  # search code points / characters
        code_points = {c[0] for c in chars}
        for i in sys.argv[2:]:
            code_point = int(i)   # search code point
            #code_point = ord(i)  # search character
            print(Unicode[code_point])
            print(code_point in code_points)

Das Skript nimmt als Argumente den Schriftartpfad und optional Codepunkte/Zeichen, nach denen gesucht werden soll:

$ python checkfont.py /usr/share/fonts/**/DejaVuSans.ttf
(32, 'space', 'SPACE')
(33, 'exclam', 'EXCLAMATION MARK')
(34, 'quotedbl', 'QUOTATION MARK')
…

$ python checkfont.py /usr/share/fonts/**/DejaVuSans.ttf 65 12622  # a ㅎ
LATIN CAPITAL LETTER A
True
HANGUL LETTER HIEUH
False

fc-query my-font.ttf gibt Ihnen eine Karte der unterstützten Glyphen und aller Gebietsschemata, für die die Schriftart gemäß fontconfig geeignet ist

Da so ziemlich alle modernen Linux-Apps fontconfig-basiert sind, ist dies viel nützlicher als eine rohe Unicode-Liste

Das tatsächliche Ausgabeformat wird hier besprochen http://lists.freedesktop.org/archives/fontconfig/2013-September/004915.html


Linux
  1. Wie kann man herausfinden, ob das System Intel Amt unterstützt?

  2. Was ist die Schwachstelle CVE-2015-2426 im Font-Treiber?

  3. Herausfinden, ob eine Nachricht über TCP zugestellt wurde

  4. Holen Sie sich die letzten 4 Zeichen der Ausgabe von Standardausgabe

  5. Wie finde ich heraus, welche Version von Linux ich verwende?

Wie finde ich heraus, welche Gruppe ein bestimmter Benutzer hat?

Welche Zeichen sind in Windows- und Linux-Verzeichnisnamen verboten?

Was ist der Unix-Befehl, um herauszufinden, welche ausführbare Datei einem bestimmten Befehl entspricht?

Was könnte seltsame Zeichen in Vim verursachen?

So finden Sie heraus, welche Datei sich in einem bestimmten Sektor befindet

Herausfinden, was die Festplatte hochfährt