我正在尝试为我正在处理的项目编写字体导出器。为了正常工作,我需要获得每个字形的适当宽度。由于字体位图是以用户指定的比例生成的(例如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的大小)。