为什么我看到的是方块而不是文字?

7

我尝试在我的WPF应用程序中安装和使用字体,但是我得到的结果都像这样:

enter image description here

这是我尝试使用该字体的代码:

richtext1.FontFamily = "SH_Roq'a";

期望的结果是:(来自MS Word的快照) enter image description here 如果我试着将字体文件添加到项目文件夹中,并像这样使用它作为资源:
richtext1.FontFamily = "./#SH_Roq'a";

我得不到所需的方形结果,但我也没有预期的字体!我得到的是Tahoma字体:
enter image description here
这不是目标字体,请下载目标字体文件此处进行实验。
感谢任何帮助!
编辑
以上捕获文本的纯文本为:
تفاح احمر

对于那些熟练使用字体的专家来说,他们可以进行实验。


这个词的版本是否加粗?字体看起来非常相似。如果查看字体的 .ttf 文件,是否包含指定的字符? - Tejs
我的个人印象是,Word 版本与当前 WPF 结果几乎看起来完全不同(尖角连接而不是方形端点、书法笔触而不是固定笔画宽度等),但是 OP 是否能够在问题中也用纯文本编写文本呢?这将为我们这些了解字体、Unicode及相关问题,但不知道如何书写阿拉伯语的人提供一个机会,以精确复制您所看到的内容。 - O. R. Mapper
尝试使用FlowDocumentViewer查看一下,但需要将文本打包到FlowDocument中以确保正确显示。 - paparazzo
Tejs => {这个单词文档没有加粗,我们得到的结果是 tahoma 字体,而不是目标字体,或者就像上面一样只有方块} - simo
O. R. Mapper => {不是的,它是另一种字体,至于我的问题的普通文本,请参见上面的编辑} - simo
显示剩余2条评论
1个回答

3

这个字体存在以下几个问题:

  1. 它没有采用Unicode编码:使用的是第3平台ID,编码ID为0的cmap子表,也称为“符号”表。在旧式Windows桌面应用程序之外通常无法很好地工作。

  2. 它没有OpenType布局特性(GSUB,GPOS等),这是正确呈现阿拉伯语/乌尔都语/波斯语书写的基本要素,例如初始、中间、末尾、孤立形式;lam-alef连字等。

  3. 它使用非常古老的OS/2表(版本0)。某些Microsoft技术至少需要版本1。此表的fsSelection字段中还设置了保留位和一些其他可疑的设置。

我就不再看下去了。这个字体似乎是使用非常古老的工具,使用过时的字体构建知识构建的。它需要进行重大更新才能在现代环境中正确工作。


非常感谢您详细的回答,能否告诉我们是否有一种工具可以用来优化这样一个旧字体?一种可以将字体文件迁移到现代环境中运行的工具? - simo
周围有一些字体工具(例如FontForge),但仅靠一个工具可能不会对您有太大帮助。该字体需要得到理解这种书写系统以及具备现代字体创建/编辑/开发知识的人的关注。 - djangodude

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接