zoukankan      html  css  js  c++  java
  • 填充完成,开始字体排版和管理

    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 凌晨两点。

  • 相关阅读:
    mysql 在orderby和limit混合使用时重复数据问题
    springboot启动类 注解
    redis RDB和AOF两种持久化的区别
    C#解析逻辑字符串【x>y&&a>b||p=r】
    删除例如联想笔记本系统隐藏分区
    通过贝叶斯算法实现自动识别类别
    将可执行exe文件注册成windows服务
    Windows10中的IIS10安装php manager和IIS URL Rewrite 2.0组件的方法
    添加钩子监听全局鼠标或键盘事件
    C# DateTime.Now和DateTime.UtcNow的区别
  • 原文地址:https://www.cnblogs.com/crazylights/p/1868470.html
Copyright © 2011-2022 走看看