当前位置:刘伯温高手心水论坛1 > 软件轮廓 >

c++程序、软件、C、Java、Delphi、flash、VB、php、OpenGL等、tt

  c++程序、软件、C#、Java、Delphi、flash、VB、php、OpenGL等、ttf文字轮廓提取

  c++程序、软件、C#、Java、Delphi、flash、VB、php、OpenGL等、ttf文字轮廓提取

  如何区分ttf字体封闭比划轮廓的内外轮廓线?说明:提取字体轮廓线后如何得知字体的轮廓线是内部轮廓还是外部轮廓。如图片上的文字‘中’字矢量数据已经提取出来。想将字体正确填充,如...

  如何区分ttf字体封闭比划轮廓的内外轮廓线?说明:提取字体轮廓线后如何得知字体的轮廓线是内部轮廓还是外部轮廓。 如图片上的文字‘中’字矢量数据已经提取出来。想将字体正确填 充,如何判断字体轮廓2和轮廓3的数据是内部轮廓线。提供算法和 FMC函数均可。注意:不需要绘制字体轮廓的方法,我已经实现线段和字体轮廓的提取和 绘制,不需要射线法,算法效率太低,只是填充没有内外轮廓信息不

  知道如何填充正确。图片就是 C++结合OpenGL得到的提取ttf文字轮廓绘制的。 绘制函数GetGlyphOutline 参考网址在基础上添加的贝塞尔。 如果另行提供文字剪裁办法(非OpenGL剪裁)另行加分

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  直线和曲线,我们提到了一段三阶Bezier曲线有四个控制点定义:位于曲线上(on-curve)的起始点、两个不在曲线上(off-curve)的控制点和一个曲线上的结束点。TureType字体中的图元轮廓是用二阶Bezier曲线定义的,有三个点:一个曲线上的点,一个曲线外的点和另一个曲线上的点。多个连续的不在曲线上的点是允许的,但不是用来定义三阶或更高阶的Bezier曲线,而是为了减少控制点的数目。比如,对于on-off-off-on模式的四个点,会加入一个隐含的点使之成为on-off-on-off-on,因此定义的是两段二阶Bezier曲线。

  如果设置了G_ONCURVE位,那么控制点在曲线上,否则不在曲线上。如果设置了G_REPEAT,标志数组中的下一字节表示重复次数,当前标志应该重复指定的次数。因此,标志数组中实际使用了某种类型的行程编码。标志中的其他位用于描述相应 的x坐标和y坐标的编码方式,它们可以表示当前相寻坐标是否和上一个相同、正的单字节值、负的单字节值或有符号两字节值。

  解码图元的描述是一个两次扫描的起始点。然后再遍历图元定义中的每一个点把它转换为更容易管理的格式。程序清单14-2列出了解码TrueType图元的函数,它是KTrueType类的一个方法。

  KTrueType类处理TrueType字体的装入和解码,随书光盘中有它的完整源代码。DecodeGlyph给出图元索引和可选的变换矩阵,处理的是单个图元的解码。参数curve是KCurve类,用于把TrueType图元定义保存为32位的点的赎罪以及一个标志数组,以梗用GDI进行显示。这些代码可以作为简单TrueType字体编辑器的基础。

  代码中调用了GetGlyph方法,该方法用位置表索引找到该图元的GlyphHeader结构。从中得到图元的轮廓线数目。注意必须反转该值的字节序,因为TrueType字体用的是Big-Endian字节序。如果该值为负值,说明这是一个合成图元,应该转而调用DecodeCompositeGlyph方法。接下支的代码定位了endPtsOfContours数组,找出点的总数,然后跳过指令找到标志数组的起始位置。追问我见过这个,看了很多天,但是没有我提到的问题,不过还是谢谢你,毕竟所以答案中唯独方向是对的。追答你可以参考微软:如何绘制 TrueType 标志符号轮廓

  实际应用、OpenGL不提供汉字字符显示、只能自己添加文字绘制或者取模╮(╯▽╰)╭,GDI或者GDI+就提供。

http://juliekusyk.com/ruanjianlunkuo/473.html
点击次数:??更新时间2019-07-07??【打印此页】??【关闭
  • Copyright © 2002-2017 DEDECMS. 织梦科技 版权所有  
  • 点击这里给我发消息
在线交流 
客服咨询
【我们的专业】
【效果的保证】
【百度百科】
【因为有我】
【所以精彩】