我试图用freetype 2.6库从一些.ttf字体中提取字距调整信息.
这就是我如何获取字距信息(循环字符):
if( FT_HAS_KERNING(face->getFace()) && previous ){
FT_Vector delta;
FT_UInt glyph_index = FT_Get_Char_Index( face->getFace(), character );
FT_UInt prev_index = FT_Get_Char_Index( face->getFace(), previous );
FT_Get_Kerning( face->getFace(), prev_index, glyph_index,
FT_KERNING_DEFAULT, &delta );
kerning = delta.x >> 6;
}
Run Code Online (Sandbox Code Playgroud)
我用一些不同的字体尝试了这个程序:"Times new roman.ttf","Tymes.ttf","minion.otf".对于Times new Roman字体,正确提取字距调整信息,我通过记录信息来检查.
问题是我不明白为什么字距调整总是0(即FT_HAS_KERNING返回false,而FT_GetKerning仍然返回0)其他2种字体.
我检查了fontforge,对于"VA"和"To"对,存在字距调整信息,它们就在那里!所以它们必须存储在.ttf中.然而,使用上面的代码,对于"VA"或"To",字距调整始终为0,或者FT_HAS_KERNING返回false.
我在这里缺少任何freetype选项或设置吗?任何一种启示都受到赞赏..
编辑:我正在设置面部大小
FT_Set_Pixel_Sizes( face->getFace(), 0, size);
Run Code Online (Sandbox Code Playgroud)
我正在尝试将基于lua的脚本系统嵌入到我的游戏引擎中.我希望脚本能够同时具有阻塞和非阻塞命令,例如:
character.walkTo(24, 359); // Blocks until character arrives
c = 35; // Non blocking, execution goes on to the next statement
Run Code Online (Sandbox Code Playgroud)
由于"walkTo"需要"活动"超过1帧执行,我希望能够从Java主机而不是整个函数运行1个语句.这是因为拥有真正的多线程是不合适的,这是不需要的.
如果我只执行1个语句,并保持执行状态"暂停"直到下一个语句执行,我将能够通过检查命令是否在主机中完成来实现阻塞命令,如"walkTo",如果是,则去到下一个语句,否则,等到下一帧迭代.
有没有办法从带有LuaJ的Java主机(或任何其他Lua api)执行1个语句,或者我被迫使用lex和yacc开发自己的脚本引擎?
欢迎任何好主意,谢谢!
我在家中自己的服务器上设置了Sonatype Nexus存储库。该服务器已在端口8081上使用HTTP进行了设置,并且看起来可以从本地和远程浏览器正常工作。
问题是,当我尝试下载某些工件(仅其中一些工件,通常超过500Kb)时,在传输完成之前,系统(在服务器端)关闭了连接,从而导致网络错误。
curl -H --url http://<myserver>:8081/..../artifact.jar
> ....
> curl: (18) transfer closed with 116756 bytes remaining to read
Run Code Online (Sandbox Code Playgroud)
当我将nexus设置为与ssl一起运行时(在https上,端口8443),该问题神奇地消失了,但这需要我使用verisign等来验证证书,这只会使事情复杂化。
为什么上述伪像(总计约700Kb)的传输总是那样失败?原因可能是什么?