0

私が取り組んでいるプロジェクトのフォント エクスポーターを作成しようとしています。適切に動作させるには、各グリフの適切な幅を取得する必要があります。CairoContet.SetFontSize(...)これは、フォントのビットマップがユーザー指定のスケール (例: )で生成されるという事実によって複雑になります。

にアクセスしCairoContext.FontMatrixてエクステントをスケーリングしようとすると、次の SIGSEGV が表示されます。

Stacktrace:


Native stacktrace:

    0   mono                                0x000b6ea9 mono + 745129
    1   mono                                0x00006e0e mono + 24078
    2   libsystem_c.dylib                   0x949e259b _sigtramp + 43
    3   ???                                 0xffffffff 0x0 + 4294967295
    4   mono                                0x000b4e32 mono + 736818
    5   mono                                0x000b7ac4 mono + 748228
    6   mono                                0x000b8e18 mono + 753176
    7   mono                                0x00107a02 mono + 1075714
    8   ???                                 0x0035e2c1 0x0 + 3531457
    9   ???                                 0x003d9a18 0x0 + 4037144
    10  ???                                 0x0a20deb0 0x0 + 169926320

Debug info from gdb:

/tmp/mono-gdb-commands.ulVxAb:1: Error in sourced command file:
unable to debug self

=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================

これはそれをトリガーするコードですが、一般に FontMatrix を取得しようとすると同じエラーが発生するようです。

cr.FontMatrix.TransformDistance(ref xAdvance,ref yAdvance);

進歩を拡大するための代替/より良い方法はありますか? SetFontSize がどのように機能するか (em-quad のサイズを設定する) のために設定された倍率が正確にわからないため、自分で計算することはできません。

4

0 に答える 0