首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >字体在freetype和Opengl ES 2 (IPhone设备)中渲染效果不佳

字体在freetype和Opengl ES 2 (IPhone设备)中渲染效果不佳
EN

Stack Overflow用户
提问于 2011-10-01 15:43:38
回答 1查看 2.6K关注 0票数 0

我使用freetype在IPhone设备上写文本,结果很少见。正如您在图像中看到的,相同的字符(如'b','n‘或'u')呈现不一样。

纹理始终是相同的。你知道问题出在哪里吗,或者是怎么回事?

http://craneossgd.files.wordpress.com/2011/10/image_freetype1.png

代码:

代码语言:javascript
运行
AI代码解释
复制
FT_New_Face(getFTLibrary(), _filename, 0, &(_face))
FT_Select_Charmap( _face, FT_ENCODING_UNICODE );
FT_Set_Char_Size( _face, _pt<<6,_pt<<6, _dpi, _dpi);
for (i=0; i<255; i++)
{
    if (!createGlyphTexture(i))
    {
        clean();
    }
}
.....

createGlyphTexture(unsigned char ch){
    ....
    FT_Load_Glyph(_face, FT_Get_Char_Index(_face,ch), FT_LOAD_DEFAULT)
    FT_Get_Glyph(_face->glyph, &glyph)
    ....
    // *** Transform glyph to bitmap
    FT_Glyph_To_Bitmap(&glyph, FT_RENDER_MODE_NORMAL, 0, 1);

    // *** Get bitmap and glyph data
    bitmap_glyph = (FT_BitmapGlyph)glyph;
    bitmap = bitmap_glyph->bitmap;
    // ***
    width = pow2(bitmap.width);
    height = pow2(bitmap.rows);

    // *** Alloc memory for texture
    expanded_data = (GLubyte *)malloc( sizeof(GLubyte)*2*width*height );
    for (j=0; j<height;j++)
{
    for (i=0; i<width; i++)
    {
        if ( (i>=(CRuint)bitmap.width) || (j>=(CRuint)bitmap.rows) ){
            expanded_data[2*(i+j*width)] = 0;
            expanded_data[2*(i+j*width)+1] = 0;
        } else {
            expanded_data[2*(i+j*width)] = bitmap.buffer[i+bitmap.width*j];
            expanded_data[2*(i+j*width)+1] = bitmap.buffer[i+bitmap.width*j];
        }
    }
}
    // *** Load texture into memory
    glBindTexture(GL_TEXTURE_2D, _textures[ch]);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexImage2D(GL_LUMINANCE_ALPHA, width, height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, expanded_data);
    ....
}

谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-02 16:02:27

在freetype引用中:http://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html

FT_LOAD_TARGET_LIGHT.用于非单色模式的较轻的提示算法。许多生成的字形更加模糊,但更像它的原始形状。有点像Mac上的渲染。作为一个特殊的例外,这个目标意味着FT_LOAD_FORCE_AUTOHINT。

FT_RENDER_MODE_LIGHT.This等同于FT_RENDER_MODE_NORMAL。它只被定义为一个单独的值,因为呈现模式也被间接用于定义提示算法选择器。详情请参见FT_LOAD_TARGET_XXX。

它使用下一个配置来工作:

代码语言:javascript
运行
AI代码解释
复制
FT_Load_Glyph(_face, FT_Get_Char_Index(_face,ch), FT_LOAD_TARGET_LIGHT)
...
FT_Glyph_To_Bitmap(&glyph, FT_RENDER_MODE_NORMAL, 0, 1);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7621227

复制
相关文章
替换空格
https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/
代码随想录
2021/07/16
4.7K0
替换空格
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
用户3003813
2018/09/06
3.1K0
替换空格
题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 public class Solution { public String replaceSpace(StringBuffer str) { if(str==null){ return null; } StringBuilder newStr = new St
desperate633
2018/08/27
2.4K0
替换空格
题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。       看到这个题目,我们首先应该想到的是原来一个空格字符,替换之后变成'%'、'2'和'0'这3个字符,因此字符串会变长。如果是在原来的字符串上做替换,那么就有可能覆盖修改在该字符串后面的内存。如果是创建新的字符串并在新的字符串上做替换,那么我们可以自己分配足够多的内存。       在这里介绍一种时间复杂度为O(n)的解法。        我们可以先遍历
猿人谷
2018/01/17
2.8K0
替换空格
空格替换
设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。
呼延十
2019/07/01
2.3K0
[剑指offer] 替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
尾尾部落
2018/09/04
1.9K0
[剑指offer][Java]替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
蛮三刀酱
2019/03/26
2.1K0
空格替换
描述 设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。 你的程序还需要返回被替换后的字符串的长度。 注意事项:如果使用 Java 或 Python, 程序中请用字符数组表示字符串。 样例 对于字符串 "Hello World" , 长度为 11 替换空格之后,参数中的字符串需要变为 "Hello%20World",并且把新长度 17 作为结果返回。 思路 循环遍历字符数组 碰到空字符则将空字符后所有的字符向后移动两位
一份执着✘
2018/06/04
2.6K0
替换空格_02
咱也不知道这题是不是有啥奇怪的思路要做?直接就下面这行代码结束了。 public String replaceSpace (String s) { if (s==null||s.length()==0){ return ""; }else { return s.replaceAll(" ","%20"); } }
名字是乱打的
2021/12/23
1.7K0
替换空格_02
LintCode 空格替换
设计一种方法,将一个字符串中的所有空格替换成 %20。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。 你的程序还需要返回被替换后的字符串的长度。
desperate633
2018/08/22
7660
[剑指]2空格替换
1,题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20 Happy。 2,解题思路 这里我们直接用字符串遍历的方法,将每一个字符遍历出来进行判断; 若等于空格,则替换成%20,不等于空格,则加上其本身即可; 最后再转换成字符串对象; 3,程序代码 public static String replaceSpace(StringBuffer str) { StringBuffer sb=n
程序员的时光001
2020/07/22
8950
004-替换空格
替换空格 请实现一个函数,将一个字符串中的每个空格替换成"%20"。 We Are Happy 输出 We%20Are%20Happy分析 遍历字符串 Python class Solution: def replaceSpace(self, s): # s 源字符串 s = list(s) count=len(s) for i in range(0,count): if s[i]==' ':
单车变摩托
2019/04/04
7260
牛客网 替换空格
一个空格最后替换成'%''2''0',一个字符替换为三个字符,相当于增加了2个字符;
怠惰的未禾
2023/04/27
1.5K0
从后往前替换空格
① 在字符串尾部填充任意字符,使得字符串的长度等于替换之后的长度。因为一个空格要替换成三个字符(%20),所以当遍历到一个空格时,需要在尾部填充两个任意字符。
MickyInvQ
2021/10/26
1K0
【剑指offer】替换空格
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
7410
【剑指Offer】替换空格
但是,显然这种已经有的方法不是面试官想要得到的答案,所以你得另寻方法,自己写个方法,如果写不出,那肯定给面试官不能留下一个好的印象。
Rochester
2020/09/10
6260
字符串:替换空格
示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy."
代码随想录
2020/09/10
4.6K0
字符串:替换空格
Sword To Offer 002 - 替换空格
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
Reck Zhang
2021/08/11
5750
牛客网-替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
手撕代码八百里
2020/07/28
8570
word文档尾部空格没有下划线
问题出在兼容性上面了,office版本太多了!解决方法如下: 1.word2003——工具-〉选项-〉兼容性-〉找到“为尾部空格添加下划线”的选项打勾即可 2.word2007——点击左上角的“MS Office按钮”——word选项——高级——兼容性选项——版式选项——为尾部空格添加下划线 3.word2016——文件——选项——高级——兼容性选项——microsoft office 2013-2016——确定 修改后效果:
P轴
2022/11/18
9400

相似问题

用下划线替换空格

132

用下划线替换空格

50

${file%/*}用下划线替换空格

18

内容替换功能:用下划线替换空格

13

JQuery -用空格替换下划线

45
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文