![如何在 UDS(通用目录服务)中编辑字体元数据?](https://linux22.com/image/1074741/%E5%A6%82%E4%BD%95%E5%9C%A8%20UDS%EF%BC%88%E9%80%9A%E7%94%A8%E7%9B%AE%E5%BD%95%E6%9C%8D%E5%8A%A1%EF%BC%89%E4%B8%AD%E7%BC%96%E8%BE%91%E5%AD%97%E4%BD%93%E5%85%83%E6%95%B0%E6%8D%AE%EF%BC%9F.png)
我已将其重命名以反映我所了解到的情况。以下详细信息跟踪了该问题。
原始帖子:
我正在尝试安装一组 OpenType Helvetica 字体。字体安装失败,因为“细”字体在字体属性中被描述为“浅色”,从而触发“此字体已安装在您的系统上”错误。
- 当我在 KFontView 中打开任一字体时,字体名称是“Helvetica, Light”。
- 当我单击“文件属性”并转到“信息”标签时,两种字体的“Font.Weight”均为“Light”。
- 当我在 FontForge 中打开字体时,Thin 字体显示“Thin”,而 Light 字体显示“Light”。
- 当我从 FontForge 将细字体保存为 sfd 文件并在 Kate 中打开它时,找不到字符串“Light”。
- 当我在 Kate 中打开细字体二进制文件 (oft) 时,找不到字符串“Light”。
我非常确定我想将 Thin 文件的 font.weight 属性更改为“Thin”,以便 a) 我可以安装它们,并且 b) 它们的元数据将正确无误。但我实在想不出属性对话框中的字体属性存储在哪里;更不用说如何更改它们了。
到目前为止,我想到的唯一可能的解决方案(我还没有尝试过)是安装 Thin 字体,进入字体配置数据库来更正名称,然后安装 Light 字体。除了很麻烦并且如果必须重新安装字体,我可能会丢失更改之外,这似乎是一个坏主意。
我很乐意根据要求提供更多信息。
修订(2010 年 1 月 27 日)
附加信息:
这完全是 Qt 或 KDE 的问题。将字体移至 /usr/local/share/fonts,然后调用“fc-cache”即可正常安装字体。但是,这些字体仍然不会出现在 KDE 字体安装程序中。
粗略地看一下源代码,搞乱 KDE 的字体元数据可能存储在 UDS 中。Google 提供的通用术语太多,无法提供太多帮助;所以我不确定 UDS 是属于文件系统 (ext3)、Qt 工具包,还是(不太可能)属于 KDE。
KMail 对待字体的方式与 Windows 上的 MS Office 类似。它对用户隐藏除字体系列之外的所有字体,并期望仅找到粗体、斜体和粗斜体样式。这对于测试此问题没有多大用处。
OpenOffice 的优势在于它在工具栏中显示字体系列,但在文本属性对话框中显示所有样式。不幸的是,此代码似乎存在错误;将样式更改为基本粗体和斜体以外的任何样式均无效。
Scribus 可以正确处理字体。运行 fc-cache 后,Scribus 运行正常。
答案1
这听起来很像是 Qt/KDE 中的一个错误,应该报告它:
https://help.ubuntu.com/community/ReportingBugs
否则,如果 Qt 字体索引器对此字体有问题,您尝试的任何方法都无济于事。确保包含详细信息和重现步骤。
答案2
对于遇到类似问题的人(我遇到过Candara Light
,KDE 一直坚持认为是),Candara Regular
请打开字体FontForge
并确保字体的OS/2
Weight Class
设置正确。(详细说明如下。)
请注意,在内部,即在字体文件中,此设置是纯粹的数字。这就解释了为什么 OP 无法在文件本身的任何地方找到字符串“Light”:实际文件中出现的是数字“300”,而不是字符串“Light”。
更多关于Weight Class
这Weight Class
是一个数字有记录例如这里(寻找usWeightClass
)。原则上它可以是 1 到 999 之间的任何整数,但FontForge
限制为 100 的倍数。根据FontForge
和链接的文档,这些数字与文字描述符(“Light”、“Regular”等)之间的对应关系如下:
100 Thin
200 Extra-Light
300 Light
400 Regular
500 Medium
600 Semi-Bold
700 Bold
800 Extra-Bold
900 Black
(链接的文档还包括950 Extra Black
。)
看来只是FontForge
为了方便用户而添加的文字描述。
以下事实进一步证实了此设置在内部是一个纯数字:如果在不同的字体管理器中打开相同的字体,则显示的只是数字,没有文字描述。例如,在Typograph
字体管理器。(我在 下运行它wine
;Typograph
是商业产品,但您可以下载它并使用某些功能(例如我将要描述的功能),甚至无需购买。)右键单击字体,选择Properties
,选择名为 的选项卡,然后查看“Windows 度量数据”。将有一个名为“WeightClass”的条目。这将是一个纯数字,与下Metric
出现的数字相同。FontForge
OS/2
Weight Class
如何OS/2
Weight Class
更改FontForge
在 中打开字体FontForge
。在FontForge
的菜单栏中选择Element
,然后Font Info…
在打开的窗口左侧选择OS/2
。在主区域中,确保Misc.
已选择选项卡,然后查看Weight Class
字段。根据需要进行更改,按OK
窗口底部的 ,然后生成(不保存,产生)重新创建字体。(换句话说,在FontForge
的菜单栏中,选择File
,然后Generate Fonts…
)
在我的例子中,Weight Class
最初设置为400 Regular
。但后来我将其更改为300 Light
,这为我解决了问题。