From f25e2bf7576ed445c9baa28227fe21fb1299975a Mon Sep 17 00:00:00 2001 From: Nedyalko Nikolov Date: Wed, 7 Oct 2015 13:04:21 +0300 Subject: [PATCH] Automatic custom fonts registration for iOS. --- apps/tests/file-system-tests.ts | 10 ++++++++-- apps/tests/ui/style/style-properties-tests.ts | 2 +- file-system/file-system-access.ios.ts | 2 +- ui/styling/font.ios.ts | 19 ++++++++++++++++++- 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/apps/tests/file-system-tests.ts b/apps/tests/file-system-tests.ts index 59d46b6a7..09bfe3cac 100644 --- a/apps/tests/file-system-tests.ts +++ b/apps/tests/file-system-tests.ts @@ -303,14 +303,18 @@ export var testEnumEntities = function () { // var file = documents.getFile("Test.txt"); var file1 = documents.getFile("Test1.txt"); - var fileFound, - file1Found; + var testFolder = documents.getFolder("testFolder"); + var fileFound = false; + var file1Found = false; + var testFolderFound = false; var console = { log: function (file) { if (file === "Test.txt") { fileFound = true; } else if (file === "Test1.txt") { file1Found = true; + } else if (file === "testFolder") { + testFolderFound = true; } } } @@ -323,9 +327,11 @@ export var testEnumEntities = function () { // TKUnit.assert(fileFound, "Failed to enumerate Test.txt"); TKUnit.assert(file1Found, "Failed to enumerate Test1.txt"); + TKUnit.assert(testFolderFound, "Failed to enumerate testFolder"); file.remove(); file1.remove(); + testFolder.remove(); // // ``` // diff --git a/apps/tests/ui/style/style-properties-tests.ts b/apps/tests/ui/style/style-properties-tests.ts index 34ed9674e..eb9eeb1a3 100644 --- a/apps/tests/ui/style/style-properties-tests.ts +++ b/apps/tests/ui/style/style-properties-tests.ts @@ -333,7 +333,7 @@ export function test_setting_font_properties_sets_native_font() { test_native_font(enums.FontStyle.normal, enums.FontWeight.normal); test_native_font(enums.FontStyle.italic, enums.FontWeight.normal); test_native_font(enums.FontStyle.normal, enums.FontWeight.bold); - test_native_font(enums.FontStyle.italic, enums.FontWeight.bold); + test_native_font(enums.FontStyle.italic, enums.FontWeight.bold); } function test_native_font(style: string, weight: string) { diff --git a/file-system/file-system-access.ios.ts b/file-system/file-system-access.ios.ts index 34628bac1..b38650089 100644 --- a/file-system/file-system-access.ios.ts +++ b/file-system/file-system-access.ios.ts @@ -323,7 +323,7 @@ export class FileSystemAccess { name: file }; - if (!this.folderExists(file)) { + if (!this.folderExists(this.joinPath(path, file))) { info.extension = this.getFileExtension(info.path); } diff --git a/ui/styling/font.ios.ts b/ui/styling/font.ios.ts index 5355d261a..4cb301bd4 100644 --- a/ui/styling/font.ios.ts +++ b/ui/styling/font.ios.ts @@ -1,6 +1,7 @@ import enums = require("ui/enums"); import common = require("./font-common"); import fs = require("file-system"); +import trace = require("trace"); var DEFAULT_SERIF = "Times New Roman"; var DEFAULT_SANS_SERIF = "Helvetica"; @@ -159,9 +160,25 @@ export module ios { var error = new interop.Reference(); if (!CTFontManagerRegisterGraphicsFont(font, error)) { - throw new Error(CFErrorCopyDescription(error.value)); + trace.write("Error occur while registering font: " + CFErrorCopyDescription(error.value), trace.categories.Error, trace.messageType.error); } areSystemFontSetsValid = false; } } + +function registerCustomFonts() { + var fontsFolderPath = fs.path.join(__dirname.substring(0, __dirname.indexOf("/tns_modules")), "fonts"); + var fontsFolder = fs.Folder.fromPath(fontsFolderPath); + var onEachEntityFunc = function (fileEntity: fs.FileSystemEntity): boolean { + if (fs.Folder.exists(fs.path.join(fontsFolderPath, fileEntity.name))) { + return true; + } + ios.registerFont(fileEntity.name); + return true; + } + + fontsFolder.eachEntity(onEachEntityFunc); +} + +registerCustomFonts(); \ No newline at end of file