truetype字体怎么转换成普通字体_将truetype字体默认转换为NV路径中的像素大小
我正在使用NVidia Path extension(NV路径)为OpenGL引擎编写文本模块。该扩展程序允许使用trutype metrics加载系统和外部字体文件。现在,我需要能够在渲染文本时为字形设置标准字体大小(以像素为单位)。默认情况下,加载的字形有EMscale = 2048.搜索字形指标到像素的转换我发现了这个:
将FUnits转换为像素
em方块中的值将转换为像素中的值
通过将它们乘以比例来协调系统。这个规模是:
pointSize * resolution /(每英寸72点* units_per_em)
所以units_per_em等于2048,pointSize和resolution是我无法解决的未知数。如何获得视口宽度和高度的分辨率值进入这个等式?另外,如果我的输入是字体的像素大小,那么点大小应该是多少?
我尝试使用不同类型的输入来解决这个等式,但我的渲染文本总是比参考文本(AfterEffects)更小(或更大)。
NV_Path文档引用FreeType2 metrics。参考文献说:
在face-> glyph->指标中找到的指标通常用。表示
26.6像素格式(即1/64像素),除非在调用FT_Load_Glyph或FT_Load_Char时使用FT_LOAD_NO_SCALE标志。在
在这种情况下,指标将以原始字体单位表示。
我试图将文本模型矩阵缩小1/64。它接近正确的尺寸,但仍然不完美。
以下是我目前在代码中设置文本呈现的方法:
emScale=2048;
glyphBase = glGenPathsNV(1+numChars);
pathTemplate= ~0;
glPathGlyphRangeNV(glyphBase,GL_SYSTEM_FONT_NAME_NV,
"Verdana",GL_BOLD_BIT_NV,0,numChars,GL_SKIP_MISSING_GLYPH_NV,pathTemplate,emScale);
/* Query font and glyph metrics. */
glGetPathMetricRangeNV(
GL_FONT_Y_MIN_BOUNDS_BIT_NV|
GL_FONT_Y_MAX_BOUNDS_BIT_NV|
GL_FONT_X_MIN_BOUNDS_BIT_NV|
GL_FONT_X_MAX_BOUNDS_BIT_NV|
GL_FONT_UNDERLINE_POSITION_BIT_NV|
GL_FONT_UNDERLINE_THICKNESS_BIT_NV,glyphBase+' ' ,1 ,6*sizeof(GLfloat),font_data);
glGetPathMetricRangeNV(GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV,
glyphBase,numChars,0,horizontalAdvance);
/* Query spacing information for example's message. */
messageLen = strlen(message);
xtranslate =(GLfloat*)malloc(sizeof(GLfloat) *messageLen);
if(!xtranslate){
fprintf(stderr, "%s: malloc of xtranslate failed\n", "Text3D error");
exit(1);
}
xtranslate[0] = 0.0f; /* Initial xtranslate is zero. */
/* Use 100% spacing; use 0.9 for both for 90% spacing. */
GLfloat advanceScale = 1.0f,
kerningScale = 1.0f;
glGetPathSpacingNV(GL_ACCUM_ADJACENT_PAIRS_NV,
(GLsizei)messageLen,GL_UNSIGNED_BYTE,message,glyphBase,
advanceScale,kerningScale,GL_TRANSLATE_X_NV,&xtranslate[1]); /* messageLen-1 accumulated translates are written here. */
const unsigned char *message_ub = (const unsigned char*)message;
totalAdvance = xtranslate[messageLen-1] +
horizontalAdvance[message_ub[messageLen-1]];
xBorder = totalAdvance / messageLen;
glEnable(GL_STENCIL_TEST);
glStencilFunc(GL_NOTEQUAL ,0 ,~0);
glStencilOp(GL_KEEP,GL_KEEP,GL_ZERO);
// init matrices /
translate(model ,vec3(0));
translate(view ,vec3(0));
float nearF=1 ,farF = 1200;
glViewport(0,0,_viewPortW,_viewPortH);
glMatrixLoadIdentityEXT(GL_PROJECTION);
float aspect_ratio =(float) _viewPortW /(float) _viewPortH;
glMatrixFrustumEXT(GL_PROJECTION ,-aspect_ratio,aspect_ratio,-1 ,1 ,nearF,farF);
model=translate(model,vec3(0.0f,384.0,0.0f));//move up
//scale by 26.6 also doesn't work:
model=scale(model,vec3((1.0f/26.6f),1.0f/26.6f,1.0f/26.6f));
view=lookAt(vec3(0,0,0),vec3(0,0,-1),vec3(0,1,0));
}
truetype字体怎么转换成普通字体_将truetype字体默认转换为NV路径中的像素大小相关推荐
- rdd转换成java数据结构_如何将CSV文件转换为RDD
一种简单的方法是拥有一种保留标头的方法. 假设您有一个file.csv,例如: user, topic, hits om, scala, 120 daniel, spark, 80 3754978, ...
- 使用pdfbox将pdf转换成图片的时候,STSong-Light字体不存在解决方案
问题 使用pdfbox将pdf转换成图片的时候,STSong-Light字体的文字全为空格问题解决. 告警信息:Using fallback MT-Extra for CID-keyed font S ...
- 如何将夜晚图片转化为白天图片 matlab,教你简单几步将白天图片转换成夜景图_资源库...
摘要:教你简单几步将白天图片转换成夜景图_资源库 摘要:今天分享一个有趣的教程,教大家利用滤镜和调整图层,简单几步将白天图片变成夜景图,特别实用,还能学到一个鲜为人知的调色功能,看看赶紧练练吧. 原图 ...
- 编写一个C程序,实现以下功能:编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101。在main函数中输入整数n,调用函数,输出它的二进制
题目要求: 编写一个C程序,实现以下功能: //编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101. //在main函数中输入整数n,调用函数 ...
- 金额转换,阿拉伯数字转换成中国传统形式。 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
金额转换,阿拉伯数字转换成中国传统形式. 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整 package com.itheima;import java.util.Arr ...
- truetype字体怎么转换成普通字体_【转】TrueType(二)字体格式解析
1. 概述 TrueType字体使用Mac轮廓字体资源的格式编码,标记名为"sfnt". 字体目录TableDirectory包含了字体格式的版本号和几个表. typedef st ...
- truetype字体怎么转换成普通字体_一种TrueType字体渲染方法与流程
本发明涉及一种TrueType字体显示技术领域,尤其是涉及一种基于热排序缓存机制的TrueType字体渲染方法. 背景技术: 随着军民用飞机座舱显示系统的不断复杂.功能的不断增加.显示分辨率的不断增大 ...
- truetype字体怎么转换成普通字体_如何创建自己的字体和编辑TrueType字体 | MOS86
Wouldn 在这篇文章中,我显然,付费的程序往往具有更多的功能和更好的界面来处理字体,但也有一些很好的免费的. 免费字体编辑器 Let有几百万字体可以在线下载或购买,所以如果你 创建新字体的最简单方 ...
- truetype字体怎么转换成普通字体_TrueType字体作用|如何在文档嵌入 TrueType 字体中...
访问量: 18 金山wps终于支持嵌入 TrueType 字体了,关于 嵌入 TrueType字体的作用,举个例子.比较直观的说明这个问题: 我的电脑A,您的电脑B.我的电脑A里面装了"华文 ...
最新文章
- Flutter开发之ListView添加HeaderView和FooterView-2(39)
- python电脑软件下载-Python for windows
- linux命令 正则表达式,详解Linux命令中的正则表达式
- centos oracle sqlplus,centos 下oracle sqlplus乱码问题解决
- 20个 CSS 快速提升技巧
- 判断操作系统类型的多种方法
- 标志寄存器02 - 零基础入门学习汇编语言55
- 朱嘉明《火药:改变了人类历史演变模式》
- @Value 注解用法
- 测试2年6.5K,每天“911”,我的心酸经历只有我自己知道···
- 有源与无源晶振的区别
- C#中Chart控件的一些由浅至深的理解
- Flume采集数据利器
- C语言中的float(单精度浮点数)
- Oracle11g R2相比R1的区别
- unity星空银河绚烂天空盒宇宙场景
- U8标准接口API使用-生产订单
- 一个编得好的拼音输入法C51的
- RS232转RS484接线图
- 吉林大学计网真题以及期末题汇总