FreeType 如何渲染 ü ä ö 等特殊字符?

2023-12-06

我一直坚持使用 FreeType 渲染文本。尤其是非ascii字符让我头疼。经过一番尝试和错误后,我设法呈现一些文本,但我的变音符号没有显示:

std::string text = "Hauptmenü";
for(std::string::iterator it = text.begin(); it != text.end(); ++it) {
    std::cout << *it;

    FT_Face face = loadFace(faceName);

    FT_Set_Pixel_Sizes(face, 0, fontSize);

    if(FT_Load_Char(face, *it, FT_LOAD_DEFAULT)) {
        std::cout << "Could not load character '" << character << "'" << std::endl;
    }

    FT_Get_Glyph(face->glyph, &glyph);
    FT_Glyph_To_Bitmap(&glyph, FT_RENDER_MODE_NORMAL, 0, 1);

    //render the glyphs to screen and so on
}

加载字体、获取字形等基本上都可以工作,但是“ü”没有渲染。这就是我的输出:

All characters except the 'ü' get displayed!

除“ü”之外的所有字符都会显示!

The console output

这最终出现在我的控制台中,所以我猜想我对字符串的迭代一定有问题,因为“ü”被分成了两个字符。我获得的最后两个字符的字形位图的宽度和高度均为 0。

我怎样才能解决这个问题?


简洁版本

读这个:http://www.joelonsoftware.com/articles/Unicode.html

用这个:http://www.pango.org/

长版

您似乎对文本表示和渲染有一些误解(您使用废弃软件来“检查”文本输出显示了这一点)。幸运的是,乔尔在描述这个问题方面做得相当不错:http://www.joelonsoftware.com/articles/Unicode.html

FreeType 能够解析 True Type 文件,并渲染存储在文件中的字形。它不是一个成熟的文本渲染引擎。您正在使用的字体甚至可能没有呈现您想要的字符所需的字形,您可能需要组合不同的字形产生所需的输出。

当然,您不会自己实现整个 Unicode 渲染逻辑,这是一项艰巨的任务。如果您只想向其扔“文本”并使其呈现,则必须使用更高级别的东西。至少是 HarfBuzz,或者它之上的其他东西,比如 Pango 或 Qt。关于如何使用 Pango+FreeType 的一个很好的例子可以在SDL_Pango 库.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FreeType 如何渲染 ü ä ö 等特殊字符? 的相关文章

  • 使用 mono/nunit-console/4 在 Mac OS X 控制台上运行测试

    我安装了 Max OS X 10 11 1 上面装有 Xamarin 我编写了简单的测试类 只是为了测试在 Mac OS X 和 Ubuntu 上运行 Nunit 测试 该类实际上有一个返回字符串的方法 using System names
  • 如何保证对象只有一个线程

    我有以下代码 class Service public void start creates thread which creates window and goes to message loop void stop sends WM C
  • 使用 Enumerable.OfType() 或 LINQ 查找特定类型的所有子控件

    Existed MyControl1 Controls OfType
  • 平滑滚动.net 表单

    您好 我正在 net 中使用表单 并且在运行时动态添加大量链接标签 我将这些链接标签添加到面板并将该面板添加到 winform 当链接标签的数量增加时 表单会显示一个自动滚动条 垂直 现在 当我使用自动滚动向下滚动时 表单在滚动时不会更新其
  • 根据 N 个值中最小的一个返回不同的结果

    不确定如何使标题更具描述性 所以我只是从一个例子开始 我使用下面的代码位 它从枚举中选择一个方向 具体取决于四个轴中哪一个与给定方向相比形成最小角度 static Direction VectorToDirection Vector2 di
  • 指向特征矩阵的指针数组

    我在代码中使用 Eigen 的 MatrixXd 矩阵 在某个时刻我需要一个 3D 矩阵 由于 Eigen 没有三维矩阵类型 因为它仅针对线性代数进行了优化 因此我创建了一个 MatrixXd 类型的指针数组 Eigen MatrixXd
  • GCC 和 ld 找不到导出的符号...但它们在那里

    我有一个 C 库和一个 C 应用程序 尝试使用从该库导出的函数和类 该库构建良好 应用程序可以编译 但无法链接 我得到的错误遵循以下形式 app source file cpp text 0x2fdb 对 lib namespace Get
  • 如何在 C# 控制台应用程序中将修饰符(ctrl、alt、shift)按键捕获为单个按键?

    Console ReadKey 仅在按下 正常 键时捕获输入 然后将修饰符 如果有 附加为键信息的一部分 如何将单个修饰键注册为输入 提供了一种解决方案这个链接 https blogs msdn microsoft com toub 200
  • fprintf() 线程安全吗?

    我正在为野人就餐问题的某些变量编写一个 C 解决方案 现在 我创建线程 每个线程都将 FILE 获取到同一个调试文件 在线程内我正在使用 fprintf 进行一些打印 打印的语句不受任何类型的互斥锁等保护 我没有在调试文件中观察到任何交错行
  • 在 JSQMessagesViewController 中显示 LocationMediaItem

    我刚刚尝试实施LocationMediaItem in my Xamarin iOS应用程序使用JSQMessagesViewController 一切都很顺利 唯一的问题是UICollectionView应该显示位置的单元格永远停留在加载
  • C# 构建一个 webservice 方法,它接受 POST 方法,如 HttpWebRequest 方法

    我需要一个接受 POST 方法的 Web 服务 访问我的服务器正在使用 POST 方法 它向我发送了一个 xml 我应该用一些 xml 进行响应 另一方面 当我访问他时 我已经使用 HttpWebRequest 类进行了管理 并且工作正常
  • 如何在服务器端按钮点击时关闭当前标签页?

    我尝试在确认后关闭当前选项卡 因此我将以下代码放在确认按钮的末尾 但选项卡没有关闭 string jScript ClientScript RegisterClientScriptBlock this GetType keyClientBl
  • C++ php 和静态库

    我创建了一个library a 其中包含 cpp 和 h 文件 其中包含很多类 嵌套类和方法 我想在 php 示例中包含这个静态库并尝试使用它 我想提一下 我是 php 新手 我已经在 test cpp 文件中测试了我的 libray a
  • 无法在内存位置找到异常源:cudaError_enum

    我正在尝试确定 Microsoft C 异常的来源 test fft exe 中 0x770ab9bc 处的第一次机会异常 Microsoft C 异常 内存位置 0x016cf234 处的 cudaError enum 我的构建环境是 I
  • 每个租户的唯一用户名和电子邮件

    我正在使用以下代码编写多租户应用程序ASP NET Core 2 1 我想覆盖默认的与用户创建相关的验证机制 目前我无法创建多个具有相同的用户UserName My ApplicationUser模型有一个名为TenantID 我想要实现的
  • 了解使用 Windows 本机 WPF 客户端进行 ADFS 登录

    我已经阅读了大量有关 ADFS 与 NodeJS Angular 或其他前端 Web 框架集成以及一般流程如何工作的文献 并通过 Auth0 Angular 起始代码构建了概念证明 但我不明白如何这可以与本机 WPF Windows 应用程
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正
  • 您是否将信息添加到每个 .hpp/.cpp 文件的顶部? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 创建新的 C 头文件 源文件时 您会在顶部添加哪些信息 例如 您是否添加日期 您的姓名 文件描述等 您是否使用结构化格式来存储此信息 e g F
  • 如何在 DropDownList 中保留空格 - ASP.net MVC Razor 视图

    我在视图中通过以下方式绑定我的模型 问题是我的项目文本是格式化文本 单词之间有空格 如下所示 123 First 234 00 123 AnotherItem 234 00 123 Second 234 00 我想保留此项目文本中的空格 即
  • ASP.NET Core MVC 视图组件搜索路径

    在此处的文档中 https learn microsoft com en us aspnet core mvc views view components view aspnetcore 2 2 https learn microsoft

随机推荐

  • 使用 addEventListener 添加带有参数的回调

    我正在使用画布创建拖放系统 canvas addEventListener mousedown function window initialClickX mouse x window initialClickY mouse y windo
  • 循环遍历 CSV 文件并使用 while read? 创建新的 csv 文件

    I have while read field1 field2 field3 field4 do trimmed field2 sed s g echo trimmed field3 gt gt new csv done lt FEEDS
  • SQL:将 ISNULL 与动态枢轴结合使用

    我想让枢轴产生的所有 NULL 值都变成 0 我已经将 ISNULL 放置在每个可以想象到的地方 但似乎没有任何效果 枢轴与 ISNULL 兼容吗 代码如下 DECLARE startDate datetime SET startDate
  • 笔记数据库检索条件

    有了这个代码 Set col db Search Form formname id 212 time 0 例如 我明确给出搜索函数 212 但是如果我想给出一个变量怎么办 dim var as Integer 我的搜索会是什么样子 因为这不
  • 如何通过运行应用程序在 Tomcat 上部署 Web 应用程序

    我想开发更新程序应用程序 可以说我有 运行Tomcat 在 Tomcat 上运行更新程序应用程序 在同一个 Tomcat 上运行旧版本的应用程序 我想 停止旧应用程序 取消部署旧应用程序 部署新版本的应用程序 假设我在更新程序应用程序资源中
  • 当我在棒棒糖 5.1 中单击浏览器上的共享时,我的应用程序不显示

    当您单击任何网络链接上的共享时 我尝试打开我的应用程序 我该怎么做 我需要广告任何许可吗 我已添加下面的代码 但我在共享列表中没有看到我的应用程序 我怎样才能让它发挥作用 我真的很感谢任何帮助 显现
  • 自定义注释 JSF

    我想制作自定义注释来检查 JSF Web 应用程序某些功能的安全性 为了安全起见 我将 Tomcat 安全性与 JaaS 结合使用 因此我没有可用的应用程序管理安全性 实际上想要做的是在 Spring Security Secured ro
  • 如果无法继承QSlider,如何为滑块添加刻度线

    我有一个 Qt 对话框 里面有一个滑块 当对话框初始化时 滑块将被设置一个值 为了提醒用户默认值是什么 我想给滑块添加一个标记 只需在手柄上方画一条线或一个三角形即可 这里 滑块应该是QSlider类型 这意味着我无法实现从QSlider派
  • Neo4j 强制索引的问题

    我遇到了一个问题 我在 Cypher 批量查询中强制使用索引 UNWIND rows AS row MATCH s Entity USING INDEX s Entity uuid WHERE s uuid row source MATCH
  • 如何在postgresql中查找任意大小的数组的所有组合(子集)[重复]

    这个问题在这里已经有答案了 给定一个数组 如何在 postgresql 中查找特定大小的元素的所有组合 子集 例如 给定一个数组 1 2 3 4 大小为 3 的所有组合都是 1 2 3 1 2 4 1 3 4 2 3 4 组合中的顺序并不重
  • NSURLSession:如何增加 URL 请求的超时时间?

    我正在使用iOS 7的新功能NSURLSessionDataTask检索数据如下 NSURLSession session NSURLSession sharedSession NSURLSessionDataTask dataTask s
  • 游戏中的卡牌等级

    我是一名 Java 初学者 因此 任何帮助将不胜感激 我设计了一个卡片类和甲板类 我将在我创建的游戏中使用它们 到目前为止 我的游戏似乎运行得很好 但问题出在我的 Cards 类上 我想利用 getRank 方法为玩家拥有的牌 无论花色如何
  • 如何在数据表列标题的过滤框中添加占位符文本

    我有一个素数面孔数据表 其中只有几列 并且所有列都有 filteryBy 属性 如何添加占位符或水印来为用户提供提示 任何建议 将不胜感激
  • 函数数组<可选> -> 可选<数组>

    这是我想做的 extension Array
  • Woocommerce 禁用自动订单状态更改挂起->处理

    我想禁用这个选项 每当有人在我的网站上制作和订购并且付款成功时 订单状态会自动从待处理 但是 我不想要此功能已启用 相反 我想在处理订单时手动执行此操作 我在 woocommerce 中发现了此功能 这使得此功能成为可能 我不想直接在那里更
  • Gem 安装 ruby​​-audio 失败

    我已经克隆了一个现有的存储库并且现在正在运行bundle install 由于某种原因 它在 ruby audio gem 上失败了 Installing ruby audio 1 6 1 with native extensions Ge
  • 重新格式化列中的日期

    我在 SQLite DB 中有一些以下形式的数据 id column1 date 111 280 1 1 2014 114 275 1 2 2014 日期字段的类型为 TEXT 我已被告知 https www sqlite org lang
  • docker 如何使用带引号的新命令提交 docker

    在制作 docker 的过程中 我必须将其命令从 bin sh 更改为nginx g daemon off 正是如此 I wrote docker commit change EXPOSE 80 change CMD nginx g dae
  • MongoDB:按日期查询

    在 MongoDB 数据库中 我有一个项目集合 每个项目都存储其创建日期 我需要按日期查询这个集合 我试过 db items findOne date new Date 1285947037 1000 但它没有返回任何东西 我使用 PHP
  • FreeType 如何渲染 ü ä ö 等特殊字符?

    我一直坚持使用 FreeType 渲染文本 尤其是非ascii字符让我头疼 经过一番尝试和错误后 我设法呈现一些文本 但我的变音符号没有显示 std string text Hauptmen for std string iterator