直读TTF的进展(轮廓信息完成,进入2D阶段,50%)
2010-11-03 20:01
309 查看
正确含曲线(2010.5.8日凌晨三点取得此进展)
不含曲线。(2010.5.5日凌晨四点取得此进展)
黑体的字体没有一个用曲线的。突然想到了微软雅黑,不含曲线生成也快些,下次用微软雅黑看看。
做了很多测试,主要是纳闷在truetype曲线格式的描述上,资料太少了,做过的那些同志都是一笔带过,没有人详细解析一下,truetype那一长串不再曲线上的点应该做何解释。我现在是对于一串的,就按照二阶贝塞尔的要求,按照 012 234 456 这样的顺序来绘制曲线。
得空还得去研读一下freetype的源代码,看是不是这么回事儿,至少现在这个视觉是对的。
使用方法如下,先是从文件中获取一个字模
Render2Path过程,从字模信息建立一个FontCurveList对象。
然后Render,最后取出pathlist,就是点列表了,直接用这些信息创建VertexBuffer就可以了。
Render参数传入的是细分贝塞尔曲线的距离,我是采用一个按照曲线长度去细分,比如传入0.2,就是在一条曲线上每0.2距离创建一个顶点。实际上传0.2分的过于细小了,会产生大量的顶点。
freetype默认的绘制空间都是相当大的。具体的尺寸可以看FontCurveList里面的FontSize成员,至于传入的那个'’干’,是个冗余参数,忘了删掉。
下一步就是再设计一个CLFont_Render2Texture.
历史 (from 2010.5.2,每天都到凌晨三四点)
错误结果
。
这个主要是曲线绘制的问题,没有把每段曲线分开绘制。而且truetype的第0个点完全就是为了标位置的,不参与绘制。就正确了。
但是我用simsunb.ttf怎么也输出不了一个正常的汉字,都是些极为生僻的。
一开始我以为我cmap表解析错了。查了一晚上,找不出毛病。还顺便查到资料,这个字库的cmap表使用了一个opentype的cmap format12扩展,用USC-4的。
辛苦了半天手写了Utf-8到USC-4的转换,WP7 SDK 的UTF32不让使用,有些奇怪。后来发现simsunb.ttf的cmap表里记录着0x20000以后的文字。
一查是中日韩的不常用字。。。。。。。。。。。。,这原来是一个CJK-B扩展字库。
人生若梦。。。。
换字库,试了几个小字库有些字会出错,cmap表里会放置一些不存在的字,不知道不存在是不是应该去找宋体。
然后找了厚道的老牌黑体、楷体,终于正常的绘制了出来。
正确结果
用的纯c#,保证可以移植windows phone 7。效率肯定是和unsafe的代码没法比。
而且发现windows phone 7 环境用的 dotnet framework 3.微软拟累不累啊。
PC让我用4,Windows phone 7 让我用三,虽然所差不多,但还是得编译一下试试,你这是为了宣传你能创建copy项目很牛嘛?
我现在就建立了copy版的windows phone 7 项目,随时需要保证代码兼容性。
字的读取完成了30%吧,如果要用作3D文字已经可以了。但到2D,还有一个过程,还要取得字符的排版信息。
不晓得微软会不会做个dotnet版本的字体封装,越来越觉得我这是在做微软应该做的事儿。
相关文章推荐
- 物联网技术进入商用化阶段,对信息传播将产生何种影响?
- 进展-Silverlight5、 windows phone 7、pc 三栖引擎,2D核心已完成
- 用C#构造HighChart类库,把数据转换成JSON---第二阶段完成50%API,已经能满足项目要求了
- New Ycnd 2D NOC已完成50%
- sql insert语句进入插入操作时,遇到插入失败但又没有提示信息时的个人原因
- Bing英国也取下了Beta标志 Bing将进入SP阶段
- 完成编程练习6,但从文件中读取所需的信息。该文件的第一项应为捐款人数,余下的内容应为成对的行。在每一对中,第一行为捐款人姓名,第二行为捐款数额。
- ICONIX是尽早进入编码阶段
- 整合大量开源库温习基础项目(三)登陆注册主页面大致完成,分析下怎么处理用户信息
- 百度Hi进入扫尾阶段 公测在即
- ArcGIS教程:获取建筑物轮廓线的高程信息
- 32.检验验证码以及完成注册(用到了将用户的信息存储到数据库当中)
- [TTF字体]提取TTF字体的轮廓(二)
- [TTF字体]获取TTF字体的点阵信息
- 进入Android培训阶段
- 第二阶段团队进展报告(1)
- 一阶段-SeventeenWork-3-用户和密码信息保存到test.txt文件中
- opencv——利用轮廓信息画斜矩形、外接圆、拟合直线等
- Java持久性API(JPA)第2讲——完成信息添加
- 7/14 原型编码阶段里程碑完成