文字列を表す Path オブジェクトを取得する方法が見つかりません。それは存在しますか?必要なポイントのリストで十分ですが、内部ではパスが使用されていると思います。
たとえば、GDI+ には次のようなものがあります。
GraphicsPath p = new GraphicsPath();
p.AddString("string");
そこから、「描画された文字列」の任意のポイントにアクセスして変更できます。
PS: パスに沿ってテキストを描画するという意味ではありません。
文字列を表す Path オブジェクトを取得する方法が見つかりません。それは存在しますか?必要なポイントのリストで十分ですが、内部ではパスが使用されていると思います。
たとえば、GDI+ には次のようなものがあります。
GraphicsPath p = new GraphicsPath();
p.AddString("string");
そこから、「描画された文字列」の任意のポイントにアクセスして変更できます。
PS: パスに沿ってテキストを描画するという意味ではありません。
私はこの問題の解決 (OpenGL でベクトル化されたテキストを描画するため) にかなりの時間を費やし、libSkia のソースを深く掘り下げる必要がありました。そして、それは非常に単純であることがわかりました:
実際、canvas は内部でパスを使用し、SkPaint のgetTextPath()
メソッドを使用してテキストをベクトル パスに変換します。幸いなことに、パブリック API の Java 側で として公開されていますandroid.graphics.Paint.getTextPath()
。その後、 Path を で読み返すことができますandroid.graphics.PathMeasure
。
残念ながら、正確な描画コマンドを読み取ることはできませんが、二分法などを使用して曲線をかなり厳密にサンプリングできます。