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

时间:2011-04-18 02:07:11

标签: delphi fonts

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

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

3 个答案:

答案 0 :(得分:3)

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

您甚至可以在程序的安装程序中执行此操作;这就是安装程序的用途:人们希望在运行安装程序时改变/改进:)

编辑:

如果您没有安装程序,请向用户说明他有两个选项:

  • 让你的应用安装更新的fotn
  • 看不到所有字符

答案 1 :(得分:2)

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

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

听起来您想要使用已使用名称的应用程序的变体字体 可以在系统上找到。

我个人会将新字体的名称更改为足够独特的字体,以免与现有字体冲突。这样您就可以使用您的字体而不会影响其他应用程序。

已更新:

因为您无法更改字体的名称。我会按照Jeroen Pluimers建议询问用户是否希望升级。这不需要在安装程序中完成,可以在启动时从应用程序完成。但是要求用户远比静静地做得好。

答案 2 :(得分:0)

在本地使用字体 - 接近不可能的

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

如果你确实这样做了,它就无法使用标准的API。您不会在标签上设置Font属性,并使用给定的“本地”字体自动将其渲染。你肯定不会使用未经修改的应用程序。

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

不幸的是,正如罗伯特所提到的,这不是你应该做的事情。如果用户碰巧有一个字体带有完全的字体名称,那么是什么让你认为你的字体更好?在这种不太可能的情况下,您应该使用用户拥有的任何内容,并且如果用户安装了错误的字体,则将其归咎于用户。

可能的解决方案

  • 使用图像代替特殊排版文字。适用于少量固定字体大小的文本。
  • 将您的文字放入TWebBrowser并使用CSS设置样式,以使用您的本地替代字体。
相关问题