Matplotlib によるフォントテーブルの可視化

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、PythonのMatplotlibライブラリを使って、フォントテーブルがどのように互いに関連しているかの例を通じて案内します。

VMのヒント

VMの起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebookを使って練習しましょう。

時々、Jupyter Notebookが読み込み終了するまで数秒待つ必要があります。Jupyter Notebookの制限により、操作の検証は自動化できません。

学習中に問題に遭遇した場合は、Labbyにお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

フォントの読み込み

まず、フォントファイルを読み込む必要があります。この例では、DejaVuSans.ttfフォントファイルを使用します。

import os
import matplotlib
from matplotlib.ft2font import FT2Font

font = FT2Font(os.path.join(matplotlib.get_data_path(), 'fonts/ttf/DejaVuSans.ttf'))

文字マップの設定

次に、文字マップを標準のUnicode文字マップに設定します。

font.set_charmap(0)

文字コードとグリフの取得

フォント内の文字コードと対応するグリフを取得し、それらを2つの辞書codedglyphdに格納します。

codes = font.get_charmap().items()

coded = {}
glyphd = {}
for ccode, glyphind in codes:
    name = font.get_glyph_name(glyphind)
    coded[name] = ccode
    glyphd[name] = glyphind

グリフの読み込み

次に、フォントからグリフ(文字'A')を読み込み、glyph.bbox属性を使ってそのバウンディングボックスを表示します。

code = coded['A']
glyph = font.load_char(code)
print(glyph.bbox)

ネ字情報の取得

font.get_kerning()メソッドを使って、2つのグリフ間のネ字情報を取得することができます。この例では、'A'と'V'のグリフ間、および'A'と'T'のグリフ間のネ字情報を取得します。

## 'AV'のネ字情報
print('AV', font.get_kerning(glyphd['A'], glyphd['V'], KERNING_DEFAULT))
print('AV', font.get_kerning(glyphd['A'], glyphd['V'], KERNING_UNFITTED))
print('AV', font.get_kerning(glyphd['A'], glyphd['V'], KERNING_UNSCALED))

## 'AT'のネ字情報
print('AT', font.get_kerning(glyphd['A'], glyphd['T'], KERNING_UNSCALED))

まとめ

この実験では、フォントファイルを読み込み、文字マップを設定し、文字コードとグリフを取得し、グリフを読み込み、グリフ間のネ字情報を取得する方法を学びました。これらは、Pythonプロジェクトでフォントとテキストを扱いたい人にとって役立つ技術です。