如何临时使用与本地注册字体同名的字体(在"使用"中)



我知道如何使用Delphi注册+通知和取消注册+通知字体。但我想知道我能做什么,当我有一个已经注册的字体有一个相似的名字(但它是一个不同的版本)。甚至可能在"使用"中。我可以试试这些:

  1. 在程序中使用本地字体(但在某些情况下,我无法访问代码,因为我没有制作它);
  2. 以某种方式暂时注销本地程序(即使它处于"使用"状态),只要程序打开就使用新程序,并在程序关闭后重新注册本地程序。我更喜欢第一种,但我不确定100%可以做到(我从未听说过在正常的Windows程序中使用本地字体,但我问了一下,以防我错了)。我不知道是否可以强制注销"使用"中的字体(如果可能的话)。但也许有人有更好的主意…谢谢你。

告诉用户他已经安装了相同字体的旧版本,需要安装新版本,以便他可以体验新的字形。

你甚至可以在你的程序的安装程序中这样做;这就是安装程序的作用:人们期望在运行安装程序时发生变化/改进:)

编辑:

如果你没有安装程序,那么让用户清楚他有两个选择:

  • 让你的应用安装更新后的fotn
  • 不显示所有字符

为了自己的目的而改变整个系统设置的应用程序,即使是临时的,通常也会被以负面的方式看待。

假设您删除了一个字体,然后将其更改为您的字体,然后您的程序在恢复原始字体之前结束/崩溃。

听起来像是您想要为已经使用名称的应用程序使用一种变体字体这可能会在系统中找到。

我个人会把你的新字体的名字改为一些独特的东西,它不会与现有的字体冲突。这样你可以在不影响其他应用程序的情况下使用你的字体。

更新:

因为你不能改变字体的名字。我会遵循Jeroen pluimer的建议,询问用户是否希望升级。这并不需要在安装程序中完成,它可以在启动应用程序时完成。但是询问用户要比沉默好得多。

使用local - border

你的观点"1"应该是可能的(只在本地使用给定的字体),因为Web浏览器可以做到这一点。@font-face CSS指令可以用来忽略本地安装的字体。但我怀疑用网络浏览器的方式来做这件事很困难:我没有看到任何使用TTF文件来创建字体的方法。我怀疑web浏览器通过重新实现整个文本渲染引擎来做到这一点。这是很有可能的,因为它们通常支持不止一种类型的字体文件。

如果你让这个工作,它不会与标准的API工作。你不会在标签上设置Font属性,然后自动让它使用给定的"本地"来渲染。字体。对于一个未经修改的应用程序,你肯定不会得到这样的结果。

替换Windows字体-非常糟糕的主意

不幸的是,正如Robert提到的,这不是你应该做的事情。如果用户碰巧使用的字体与你的字体名称完全相同,你凭什么认为你的字体更好?在这种不太可能的情况下,您应该使用用户拥有的任何东西,如果用户安装了错误的字体,则将其归咎于用户。

可能的解决方案
  • 使用图片代替特殊排版的文本。适用于少量固定字体大小的文本。
  • 将您的文本放入TWebBrowser,并使用CSS样式来使用您本地的替代字体。

最新更新