Embed 在堆栈中嵌入TrueType字体?

Embed 在堆栈中嵌入TrueType字体?,embed,truetype,livecode,Embed,Truetype,Livecode,是否可以在堆栈中嵌入TrueType字体,并以独立于平台的方式使用它?或者至少在Windows和Android中?在Windows上,使用安装程序是常见的做法。例如InnoSetup或安装程序制造商。InnoSetup是免费的,可以在这里找到。Installer Maker专为与LiveCode一起使用而设计,它包含一个在Windows上安装字体的特殊功能。你可以在这里找到它 LC 6.0的发行说明包含以下关于嵌入字体的文本: 添加自定义字体在LiveCode 5.5中,引入了允许应用程序捆绑自

是否可以在堆栈中嵌入TrueType字体,并以独立于平台的方式使用它?或者至少在Windows和Android中?

在Windows上,使用安装程序是常见的做法。例如InnoSetup或安装程序制造商。InnoSetup是免费的,可以在这里找到。Installer Maker专为与LiveCode一起使用而设计,它包含一个在Windows上安装字体的特殊功能。你可以在这里找到它

LC 6.0的发行说明包含以下关于嵌入字体的文本:

添加自定义字体在LiveCode 5.5中,引入了允许应用程序捆绑自定义字体的功能,然后这些字体就可以使用了 当应用程序正在运行时,将其复制到应用程序(并且仅限于该应用程序)。利用 对于此功能,您只需引用任何 要包含在“复制文件”窗格中的字体。这些文件可以 可以是直接文件引用,也可以包含在其中一个文件夹中 参考资料。独立构建器将处理以 扩展名ttf或ttc作为字体文件以这种方式使用。任何字体 以这种方式包含的内容将显示在fontNames中,并可在中使用 与系统上的任何其他字体相同


在Android中添加自定义字体的工作方式应与在iOS中完全相同-您只需在独立构建器的“复制文件”窗格中引用您的.ttf或.ttc字体即可。然后,它们将在运行时自动加载并可供使用(它们也显示在fontNames()中)

在桌面平台上,可以加载自定义字体,以便与revFontLoad命令一起使用。语法是:

revFontLoad "/path/to/my/font.fontformat"
因此,您通常会在独立构建器的“复制文件”部分中包含fontfile,并在启动时加载它

无论出于何种原因,如果您确实希望将字体嵌入堆栈文件,理论上,您可以在构建之前将fontfile的二进制数据存储为堆栈的自定义属性,并在运行时将自定义属性输出到文件,然后使用revFontLoad加载该文件。如果目标是隐藏字体文件,您甚至可以在加载文件后删除该文件-请注意,我只在IDE中尝试过,而不是在独立环境中


还要注意的是,
revFontLoad
命令只在桌面平台上有效,您必须拥有使用该字体的合法权利。

我的经验是,revFontLoad通常不起作用,尤其是在Mac OS X上(据报道这是一个bug,但我们从未找到稳定的配方)。有趣的是,OSX可能会显示一个对话框,请求加载字体的权限,但并不总是这样。这也是为什么我的客户要求我在Installer Maker中添加字体安装:只是为了确保字体可用。