diff --git a/apps/app/ui-tests-app/font/issue-3654.xml b/apps/app/ui-tests-app/font/issue-3654.xml
index 9adf3cfe9..29ec40abe 100644
--- a/apps/app/ui-tests-app/font/issue-3654.xml
+++ b/apps/app/ui-tests-app/font/issue-3654.xml
@@ -8,38 +8,38 @@
diff --git a/tns-core-modules/ui/text-base/text-base-common.ts b/tns-core-modules/ui/text-base/text-base-common.ts
index 233748761..97b35f899 100644
--- a/tns-core-modules/ui/text-base/text-base-common.ts
+++ b/tns-core-modules/ui/text-base/text-base-common.ts
@@ -1,6 +1,6 @@
// Definitions.
import { TextBase as TextBaseDefinition } from ".";
-import { FontWeight } from "../styling/font";
+import { FontStyle, FontWeight } from "../styling/font";
import { PropertyChangeData } from "../../data/observable";
// Types.
@@ -19,6 +19,13 @@ export abstract class TextBaseCommon extends View implements TextBaseDefinition
public text: string;
public formattedText: FormattedString;
+ get fontFamily(): string {
+ return this.style.fontFamily;
+ }
+ set fontFamily(value: string) {
+ this.style.fontFamily = value;
+ }
+
get fontSize(): number {
return this.style.fontSize;
}
@@ -26,6 +33,20 @@ export abstract class TextBaseCommon extends View implements TextBaseDefinition
this.style.fontSize = value;
}
+ get fontStyle(): FontStyle {
+ return this.style.fontStyle;
+ }
+ set fontStyle(value: FontStyle) {
+ this.style.fontStyle = value;
+ }
+
+ get fontWeight(): FontWeight {
+ return this.style.fontWeight;
+ }
+ set fontWeight(value: FontWeight) {
+ this.style.fontWeight = value;
+ }
+
get letterSpacing(): number {
return this.style.letterSpacing;
}
diff --git a/tns-core-modules/ui/text-base/text-base.ios.ts b/tns-core-modules/ui/text-base/text-base.ios.ts
index b3259332f..8e185822c 100644
--- a/tns-core-modules/ui/text-base/text-base.ios.ts
+++ b/tns-core-modules/ui/text-base/text-base.ios.ts
@@ -234,37 +234,9 @@ export class TextBase extends TextBaseCommon {
let fontSize = span.fontSize;
if (bold || italic || fontFamily || fontSize) {
- if (!fontSize) {
- fontSize = viewFont.pointSize;
- }
-
- if (!fontFamily) {
- fontFamily = viewFont.fontName;
- }
-
- let font;
-
- let fontDescriptor: UIFontDescriptor = viewFont.fontDescriptor;
- if (fontFamily) {
- fontDescriptor = fontDescriptor.fontDescriptorWithFamily(fontFamily);
- }
-
- let symbolicTraits;
- if (bold) {
- symbolicTraits |= UIFontDescriptorSymbolicTraits.TraitBold;
- }
-
- if (italic) {
- symbolicTraits |= UIFontDescriptorSymbolicTraits.TraitItalic;
- }
-
- if (symbolicTraits) {
- font = UIFont.fontWithDescriptorSize(fontDescriptor.fontDescriptorWithSymbolicTraits(symbolicTraits), fontSize);
- } else {
- font = UIFont.fontWithDescriptorSize(fontDescriptor, fontSize);
- }
-
- attrDict[NSFontAttributeName] = font;
+ let font = new Font(style.fontFamily, style.fontSize, style.fontStyle, style.fontWeight);
+ let iosFont = font.getUIFont(viewFont);
+ attrDict[NSFontAttributeName] = iosFont;
}
const color = span.color;