0

We are using Webfont Loader to load google fonts. And inside the active callback of WebFont.load we load our main script and bootstrap angular.js application.

<script type="text/javascript">
WebFontConfig = {
    google: {
        families: ['Open Sans:400,700,700i,400i:latin-ext']
    },
    active: function() {
        var mainScript = document.createElement('script');
        mainScript.src = "/js/main.js";
        mainScript.onload = function() {
            angular.bootstrap(document, ['cob']);
        }

        document.body.appendChild(mainScript);
    }
};

WebFont.load(WebFontConfig);
</script>

To make browser use default fonts until the google font file loaded, we set fonts for .wf-active class

html.wf-active {
    font-family: 'Open Sans', sans-serif;
}

Inside angular run, we switch apploaded and clear screen from loaders and show the application.

angular.module('mymodule')
    .run([function() {
        $rootScope.appLoaded = true;
    }
]);

html

<body>
    <div class="app-loader" ng-hide="appLoaded">loading...</div>
    <div class="page-container" ng-if="appLoaded">
        application loaded. <button>GİRİŞ</button>
    </div>
</body>

We see "loading..." until the font files loaded, then application bootstraps successfully. But the button text is rendered as "G R " for a couple of seconds, after a while 'İ' and 'Ş' characters are loaded into screen and we see GİRİŞ on button.

screen capture of button

I am sure the font file is loaded before application bootstraps, because the font doesn't change after the application is loaded.

May be irrelevant but, I got some image files on the page and foreign characters are rendered with the image files. So there is some kind of a wierd screen render latency.

We only have this issue on iOS application, I have tested it on iPhone 6 and 6s, and on xcode simulators. This works as intended on browsers (safari, chrome and firefox) and on android application we create with the same cordova project.

Azadrum
  • 756
  • 6
  • 23

1 Answers1

0

After trying various preload methods, just as I was considering to give it up, I came accross to a fact here

most browsers download fonts when they're used in a page rather than when they're declared in CSS.

It seems like latin-ext subset of the font is delayed until it is used inside the page.

I have solved the issue by putting a dummy character (İ) that will make it download latin-ext subset on load screen

Azadrum
  • 756
  • 6
  • 23