Skip to content

Commit

Permalink
Merge pull request #90 from alibaba/features/font_family
Browse files Browse the repository at this point in the history
feat: font family extension
  • Loading branch information
biezhihua authored Jun 10, 2022
2 parents 1219c97 + 5b06677 commit 99b49d7
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 36 deletions.
14 changes: 0 additions & 14 deletions GaiaXAndroid/src/androidTest/java/com/alibaba/gaiax/GXBaseTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ open class GXBaseTest {
.registerExtensionColor(GXProcessorColor())
.registerExtensionSize(GXExtensionSize())
.registerExtensionDynamicProperty(GXExtensionDynamicProperty())
.registerExtensionStaticProperty(GXExtensionStaticProperty())
.registerExtensionScroll(GXExtensionScroll())

}
Expand Down Expand Up @@ -123,19 +122,6 @@ open class GXBaseTest {
}
}

class GXExtensionStaticProperty : GXRegisterCenter.GXIExtensionStaticProperty {

override fun convert(params: GXRegisterCenter.GXIExtensionStaticProperty.GXParams): Any? {
if (params.propertyName == GXTemplateKey.STYLE_FONT_FAMILY && params.value == "unknow_fontfamily") {
return Typeface.createFromAsset(
context.assets,
"fontfamily3.ttf"
)
}
return null
}
}

class GXExtensionSize : GXRegisterCenter.GXIExtensionSize {
override fun create(value: String): Float? {
Log.d(TAG, "createProcessing() called with: size = $value")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.alibaba.gaiax

import android.content.Context
import android.graphics.Typeface
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import com.alibaba.fastjson.JSONObject
Expand All @@ -22,7 +23,17 @@ class GXCommonApiTest {
}

@Test
fun template_position_relative_left() {
fun template_font_family() {
GXRegisterCenter.instance.registerExtensionFontFamily(object :
GXRegisterCenter.GXIExtensionFontFamily {
override fun fontFamily(fontFamilyName: String): Typeface? {
return Typeface.createFromAsset(GXMockUtils.context.assets, fontFamilyName)
}
})
}

@Test
fun template_bind_data_measure_size() {
val templateItem = GXTemplateEngine.GXTemplateItem(
GXMockUtils.context,
"api",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.alibaba.gaiax

import android.graphics.Color
import android.graphics.Paint
import android.graphics.Typeface
import android.text.TextUtils
import android.util.Log
import android.view.Gravity
Expand Down Expand Up @@ -147,6 +148,19 @@ class GXComponentTextTest : GXBaseTest() {

@Test
fun template_text_processor_font_family() {
GXRegisterCenter.instance.registerExtensionStaticProperty(object :
GXRegisterCenter.GXIExtensionStaticProperty {
override fun convert(params: GXRegisterCenter.GXIExtensionStaticProperty.GXParams): Any? {
if (params.propertyName == GXTemplateKey.STYLE_FONT_FAMILY && params.value == "unknow_fontfamily") {
return Typeface.createFromAsset(
GXMockUtils.context.assets,
"fontfamily3.ttf"
)
}
return null
}
})

val templateItem = GXTemplateEngine.GXTemplateItem(
GXMockUtils.context,
"text",
Expand Down Expand Up @@ -467,6 +481,19 @@ class GXComponentTextTest : GXBaseTest() {

@Test
fun template_text_property_font_family() {
GXRegisterCenter.instance.registerExtensionStaticProperty(object :
GXRegisterCenter.GXIExtensionStaticProperty {
override fun convert(params: GXRegisterCenter.GXIExtensionStaticProperty.GXParams): Any? {
if (params.propertyName == GXTemplateKey.STYLE_FONT_FAMILY) {
return Typeface.createFromAsset(
GXMockUtils.context.assets,
"${params.value}.ttf"
)
}
return null
}
})

val templateItem = GXTemplateEngine.GXTemplateItem(
GXMockUtils.context,
"text",
Expand Down Expand Up @@ -1090,7 +1117,10 @@ class GXComponentTextTest : GXBaseTest() {
)
textView.measure(widthSpec, 0)

Log.e("[GaiaX]", "textView.measuredWidth=${textView.measuredWidth.toFloat()} textView.measuredHeight=${textView.measuredHeight.toFloat()}")
Log.e(
"[GaiaX]",
"textView.measuredWidth=${textView.measuredWidth.toFloat()} textView.measuredHeight=${textView.measuredHeight.toFloat()}"
)

Assert.assertEquals(textView.measuredWidth.toFloat(), rootView.child(0).width())
Assert.assertEquals(textView.measuredHeight.toFloat(), rootView.child(0).height())
Expand Down
30 changes: 30 additions & 0 deletions GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/GXRegisterCenter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.alibaba.gaiax

import android.graphics.Typeface
import android.view.ViewGroup
import com.alibaba.fastjson.JSONArray
import com.alibaba.fastjson.JSONObject
Expand Down Expand Up @@ -129,6 +130,23 @@ class GXRegisterCenter {
fun convert(params: GXParams): Any?
}

/**
* Load Typeface
* Basic usage:
* ```
* GXRegisterCenter.instance.registerExtensionFontFamily(object :
* GXRegisterCenter.GXIExtensionFontFamily {
* override fun fontFamily(fontFamilyName: String): Typeface? {
* return Typeface.createFromAsset(GXMockUtils.context.assets, fontFamilyName)
* }
* })
* ```
*/
interface GXIExtensionFontFamily {

fun fontFamily(fontFamilyName: String): Typeface?
}

interface GXIExtensionBizMap {
fun convert(item: GXTemplateEngine.GXTemplateItem)
}
Expand Down Expand Up @@ -315,6 +333,18 @@ class GXRegisterCenter {
return this
}

fun registerExtensionFontFamily(extensionFontFamily: GXIExtensionFontFamily): GXRegisterCenter {
this.extensionStaticProperty = object : GXIExtensionStaticProperty {
override fun convert(params: GXIExtensionStaticProperty.GXParams): Any? {
if (params.propertyName == GXTemplateKey.STYLE_FONT_FAMILY) {
return extensionFontFamily.fontFamily(params.value as String)
}
return null
}
}
return this
}

fun reset() {
extensionNodeEvent = null
extensionCompatibility = null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,27 +171,20 @@ class GXStyleConvert {
}

fun fontFamily(fontFamily: String): Typeface? {
try {
// extend
GXRegisterCenter
.instance
.extensionStaticProperty
?.convert(
GXRegisterCenter.GXIExtensionStaticProperty.GXParams(
GXTemplateKey.STYLE_FONT_FAMILY,
fontFamily
)
// extend
GXRegisterCenter
.instance
.extensionStaticProperty
?.convert(
GXRegisterCenter.GXIExtensionStaticProperty.GXParams(
GXTemplateKey.STYLE_FONT_FAMILY,
fontFamily
)
?.let {
(it as? Typeface)?.let { return it }
}

// src
return Typeface.createFromAsset(assets, "$fontFamily.ttf")
} catch (e: Exception) {
e.printStackTrace()
return null
}
)
?.let {
(it as? Typeface)?.let { return it }
}
return null
}

fun font(css: JSONObject): GXSize? =
Expand Down

0 comments on commit 99b49d7

Please sign in to comment.