2025/3/27(木)

しばらく日報を欠かしていた。ここ数日卒業にまつわる飲み会などの行事で遅くなることが多い。


「ゲーム開発用のライブラリ」として日報で時々書いてきたものをchaosplant.techに載せた。名前は”BrightCpp”。

https://chaosplant.tech/devs/BrightCpp

しかしこうして見ると殺風景だ。DXライブラリのホームページだってもうちょっと映える見た目をしている。そもそもあのサイト自体全体的に魅せる作りをしていないので、どうにかして一つ一つの開発物を魅せる作りにした方がよい気がしてきている。あのHPは自分の実績紹介ではなく、開発物を使ってもらって欲しくて作っているページなので、それが達成できなければ意味がない。ポートフォリオという概念を嫌って作ったのにむしろそっちに近づいてしまっている可能性がある。


BrightCppにフォント描画機能を付けたいのだが、まずフォントファイルを読み込む段階が問題になる。システムにインストールされているフォントの場所が分からないのだ。Siv3Dはフォントファイルを組み込むというストロングな方法を取っているが、出来ればそれはしたくない。システムを頼るか自分で組み込むかは開発者の判断に任せたいものだ。

調べたところWindowsはGDIもしくはDirectWrite、Linuxにはfontconfigなどあるらしいが、その辺全てをよろしくやってくれるクロスプラットフォームライブラリとかは無いようだった。

BrightCppにそういう実装をするのもいいが、そういう読み込みをまとめるライブラリが無いなら作ってしまえば新規性になる。そう考えてlibfontlistというライブラリの開発を決めた。

https://github.com/Kiterai/libfontlist

今のところWindowsにだけ対応。少なくともMacOS、Linuxあたりには対応したい。

とりあえず関数1つ呼べば全情報を拾ってくる実装にしてみているのだが、いやに重い。DirectWriteの内実に詳しくはないが、全体を列挙するのとは別に1つ1つの情報を取る際に負荷がかかっている説がある。全列挙と詳細取得を分けてみるべきか。

Categories: