FreeType2 ft_outline_decomposition返回巨大的数字
FreeType2 FT_Outline_Decompose returns huge numbers
我正在尝试使用FreeType lib读取字符的字形大纲。我从一个标准的。ttf文件中加载字体。到目前为止,我一直在使用轮廓标签将轮廓转换为路径元素,如分段和贝塞尔曲线。然后我找到了ft_outline_decomposition,这是lib的一部分。但是当我使用它时,分解的数据值是巨大的。路径上的每一个点的值都是~ 859722XXX,所以即使按例子中建议的64的比例缩小,也无助于得到像素大小的值。
我的代码是这样的: const char* fontFile ="fonts/Verdana.ttf";
std::string chars("Uta n");
char charcode = chars[0];
FT_Library defLibHandle;
FT_Error err = FT_Init_FreeType(&defLibHandle);
if(err){
printf(ft_errors[err].err_msg);
throw;
}
FT_Face faceHandle;
err = FT_New_Face(defLibHandle,fontFile,0,&faceHandle);
if(err){
printf(ft_errors[err].err_msg);
throw;
}
FT_Glyph glyph;
// load glyph
err = FT_Load_Char(faceHandle,
charcode,
FT_LOAD_NO_BITMAP | FT_LOAD_NO_SCALE);
if (err) {
std::cout << "FT_Load_Glyph: errorn";
}
//FT_Get_Glyph(faceHandle->glyph, &glyph);
FT_Outline outline = faceHandle->glyph->outline;
if (faceHandle->glyph->format != ft_glyph_format_outline) {
std::cout << "not an outline fontn";
}
FT_Outline_Funcs funcs;
funcs.move_to = (FT_Outline_MoveTo_Func)&moveTo;
funcs.line_to = (FT_Outline_LineTo_Func)&lineTo;
funcs.conic_to = (FT_Outline_ConicTo_Func)&conicTo;
funcs.cubic_to = (FT_Outline_CubicTo_Func)&cubicTo;
// trace outline of the glyph
err = FT_Outline_Decompose(&outline,
&funcs, nullptr);
if (err) {
std::cout <<ft_errors[err].err_msg ;
}
现在,在像moveTo()这样的回调中,我尝试调整大小:
int moveTo(FT_Vector* to, void* fp) {
pathRef->moveTo(ftVecToFloat(to)); ///
// ftVecToFloat is "float(f) / 64.0f" ///
return 0;
}
但是初始FT_Vector值太大了,除以64.0仍然不重要
set函数。Shift = 0;Funcs.delta = 0;将
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 什么时候在C++中返回常量引用是个好主意
- 你能重载对象变量名本身返回的内容吗
- 为什么 Serial.println(<char[]>);返回随机字符?
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何获取std::result_of函数的返回类型
- QueryWorkingSet总是返回false
- (C++)分析树以计算返回错误值的简单算术表达式
- 访问者访问变体并返回不同类型时出错
- 如何返回一个类的两个对象相加的结果
- OpenInventor从9.8升级到10.4.2后,GLSL纹理返回零
- lower_bound()返回最后一个元素
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何取消对nullptr的屏蔽,返回正确的对象
- 我的函数总是返回一个巨大的数字
- std::queue::size() 可以在 size() == 0 的 pop() 之后返回一个巨大的数字
- 返回值优化:我可以避免复制构造巨大的STL容器吗
- FreeType2 ft_outline_decomposition返回巨大的数字
- 从取消引用的迭代器返回 std::map<std::string, int> 时出现巨大的内存泄漏