• 填充完成,开始字体排版和管理


    image

    文字填充最后果然没有想到什么有效地优化形态,回归碰撞检测扫描线方式,老老实实的来。c#的性能果然不负所望,低的可以。
    填充一个猛字,要花30毫秒左右。和像素填充低于1ms的性能差太多。

    排版的问题不是很复杂,以前对freetype很熟悉。之后的管理也已经轻车熟路。

    只是我相应的信息还没有从TTF解析,还有一些解析工作要回头去做。
    优化空间不大,还是先用多线程彻底的避免字模生成过程干扰逻辑。

    其实我已经优化了,本来是有200多毫秒的傲人战绩。

    1.生成线段时采用了很低的曲线拆分精度.

    2.不是逐点测试,一次扫描一行所有的碰撞点,排序后作为线段绘制。

    3.使用简化了的y向扫描判断方法,比判断任意两条线段相交快很多。

    还有一些可能的字模渲染优化点:

    一 float 运算 变成整数运算。因为牵扯斜率。使用了一些浮点数和除法。想办法简化这部分的计算工作量,可能会有很好的效果。假设1/2时间减少。

    二、对线段做二叉管理。曲线的线段太多了。遍历不是个好方法。根据线段y值所在的空间构造二叉树可以减少相当的定位时间,不用遍历每条线段来碰撞。假设1/2时间减少。

    虽然也是两项很有意义的优化,但相对需要花的代价也较大。

    同时没有处理好的还有微软雅黑的cmap表和三次曲线。

    这些留待2.0版本解决。

    1.0我想使用一个更直接的方式,多线程。

    字模生成独立线程,渲染的时候如果字模没有生成好,占位和排版先用起来,字模随便填个啥。好了再渲染出来。

    65%完成度了,有能力的家伙们,现在字模已经能画了,后面的工作已经可以自己搞定了。不过我还是会把他推进到80%滴。

    80%定义,可以指定任意字号字符串带排版输出。排版的定义是文字文字正常,空格正常,间距正常。

    2010.5.18 凌晨两点。

  • 相关阅读:
    四则运算出题器
    四则运算出题网页
    四则运算自动生成器实现(python、wxpython、GUI)
    python 实现小学四则运算
    Process and Thread States
    COS AP-开启WPA后无法关联SSID!
    WLC MAC Filtering
    禅道--个人理解 简单介绍
    IDEA解决乱码
    avue 实现自定义列显隐并保存,并且搜索表单、form表单、crud列顺序互不影响。
  • 原文地址:https://www.cnblogs.com/crazylights/p/1868470.html
Copyright © 2020-2023  润新知