このリポジトリは、Micropythonディスプレイドライバーで使用するフォントを作成および展開する方法を定義します。 PCユーティリティは、業界標準のフォントファイルをPython sourcecodeの形のビットマップとしてレンダリングします。 Micropythonモジュールにより、このようなファイルを適切なデバイスドライバーを備えたデバイスに表示できます。これらには、SSD1306チップと公式デバイスドライバーを使用したOLEDディスプレイが含まれます。 Nano-GUIリポジトリの一部として、さまざまなディスプレイテクノロジーの互換性のあるドライバーが利用できます。
Micropythonプラットフォームは一般にRAMが制限されていますが、フラッシュメモリの形でより豊富なストレージがあります。フォントファイルは比較的大きい傾向があります。文字列をデバイスにレンダリングする従来の手法には、フォント全体をRAMにロードすることが含まれます。これは速いですが、RAM集約型です。フォントをランダムアクセスファイルとして保存し、個々のグリフをオンデマンドでRAMにロードする代替品は、ほとんどのディスプレイデバイスで妥当なパフォーマンスには遅すぎます。
この代替は、フォントをPythonソースファイルとして実装し、データはbytesオブジェクトとして宣言されます。このようなファイルは、bytecodeとして凍結される場合があります。これには、特定のディレクトリにPythonファイルを使用してソースからファームウェアを構築することが含まれます。インポートでは、非常に少ないRAMを使用しますが、データに高速にアクセスすることができます。 Frozen Bytecodeの使用は完全にオプションであることに注意してください。RAMの使用が問題にならない場合、フォントファイルは通常の方法でインポートされる場合があります。
結果のファイルは、2種類のディスプレイデバイスドライバーで使用可能です。
framebufferクラスからサブクラス化されているドライバー。これは、以下のドキュメントへのリンクの4つのコンポーネントで構成されています。
Writerクラスとの互換性を確保するための情報を提供します。このコマンドラインユーティリティはPython 3で記述され、PCで実行されます。スケーラブルなフォントをPythonに変換するために、ユーティリティはttfまたはotfフォームのフォントファイルをピクセルの高さとともに入力し、フォントをビットマップとして含むPythonソースファイルを出力します。固定および可変ピッチレンダリングがサポートされています。デザインには次の目的があります。
1つ目は、ハードウェア固有の引数をユーティリティに提供することで達成されます。これらは、フォントデータの水平または垂直マッピングとビット順序を定義します。
2つ目は、FreetypeとFreetype Pythonバインディングを使用して達成されます。その使用はここに文書化されています。また、これは、冷凍バイトコードとして保存されているフォントをインポートする際のRAM使用の測定値についても詳しく説明します。
スケーラブルなttfまたはotfファイルの変換プログラムでは、より大きなフォントに最適に機能します。小さなフォントの場合、手描きのビットマップフォントファイルを使用することをお勧めします。これらがサポートされています。BDFまたはbdfフォントファイルは、スケーラブルフォントから発信されるファイルと同じ形式でPythonソースに変換される場合pcfあります。互換性のある小さなフォント( examples/fonts )を含むMicropyezfontsも参照してください。
カーニングはサポートされていません。フォントはピクセルごとに1ビットです。カラーディスプレイは、レンダリング段階でカラー情報を追加するCWriterクラスによってサポートされています。これは、文字のすべてのピクセルが同じ色になっていることを前提としています。
デフォルトでは、 font_to_py.pyユーティリティはchr(32)からchr(126)を含むASCII文字セットを生成します。コマンドラインオプションを使用すると、任意のUnicode文字を含めるように文字セットを変更できます。英語以外の言語など、代替セットを指定できます。これで、スパース文字セットの効率的なサポートが提供されます。
フォントファイルは、通常の方法でインポートされている場合にimport font14 。 Pythonフォントファイルには、次の機能が含まれています。 font_to_py.pyに提供された引数によって定義されたこれらの返品値:
heightピクセルで高さを返します。
max_width 、グリフの最大幅をピクセルで返します。
グリフの上部からベースラインへのbaselineオフセット。
Fontが水平にマッピングされている場合、 hmap Trueを返します。
ビット反転が指定されている場合、 reverseリターンはTrue 。
Monospacedレンダリングが指定されている場合、 monospacedスパースはTrue 。
min_ch 、ファイル内の最低文字の序数を返します。
max_ch 、ファイル内の最高文字の序数を返します。
グリフはget_ch関数で返されます。その議論はユニコード文字であり、次の値を返します。
memoryviewオブジェクト。 font_to_py.pyユーティリティを使用すると、デフォルトのグリフを指定できます(通常は? )。未定義のキャラクターで呼び出された場合、このグリフは返されます。
min_chおよびmax_ch関数は、主に隣接する文字セットに関連しています。
すべてのコードはMITライセンスの下でリリースされます。