【问题标题】:Loading custom fonts from a URL in NativeScript从 NativeScript 中的 URL 加载自定义字体
【发布时间】:2016-12-07 12:27:03
【问题描述】:

NativeScript 支持使用打包在应用的 app/fonts 目录中的自定义字体。一种是使用 CSS font-family 规则来引用它们。我需要能够使用在运行时从网站加载的自定义字体。

在原生 Android 中,可以或多或少地直接从网址加载字体(只需打开 URL 的输入流并将其提供给 Typeface 构造函数)。在 iOS 中,这也是可能的(根据 this thread)。除了下拉到本机代码之外,是否支持在 NS 中做类似的事情(使用从网络加载的自定义字体)?

【问题讨论】:

    标签: fonts font-face nativescript


    【解决方案1】:

    这实际上在 NativeScript 中非常简单;但是,如果您不想复制任何代码,则有一个问题。您必须将字体放在 /app/fonts 文件夹中,即使是您下载的字体。

    你的步骤是:

    1. 将字体下载到/app/fonts/文件夹,您可以使用任何有效的方法下载它。
      不幸的是,字体注册系统会在字体文件夹中查找任何自定义字体。所以除非你想在你自己的代码库中“复制”注册码;只需将新字体放入/app/fonts/ 文件夹即可。
    2. 为ios注册字体:

    if (!global.android) { var fonts = require('ui/styling/fonts'); fonts.ios.registerFont('MyFont.ttf'); // or .otf }

    1. MyFont直接分配给项目的样式属性; (即SomeLabel.style.fontFamily = "MyFont";

    1. 将字体系列分配给一个css值;然后分配css Page.addCss('MyCoolFont { font-family: myFont; }");SomeLabel.cssClass = 'myCoolFont';

    【讨论】:

    • 我想我太卡在 Android 开发模式下,应用程序的资源是只读的。我什至没有想到简单地将字体文件放入app/fonts。谢谢!
    • 为了面向未来,测试if (global.ios)而不是if (!global.android)不是更好吗?
    • 是的,我在一年前向 NS 团队提出了在 ios 引擎中发布 global.ios 的建议,但他们不同意我的意见。我仍然认为他们是错误的。 :-) 你可以在android上使用global.android...其他平台没有这样方便的方法。你可以require ('platforms') 并以这种方式检测它,或者你可以使用类似的东西:if (typeof NSString !== 'undefined' && typeof NSObject !== 'undefined') // on ios
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 2022-08-20
    • 2018-02-23
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    相关资源
    最近更新 更多