From 0b97a2a7ea8aaf39809356d69daec19341533b57 Mon Sep 17 00:00:00 2001 From: wangshengwen Date: Mon, 18 Nov 2024 18:39:13 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=8F=B3=E6=8B=AC=E5=8F=B7=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=E4=B8=8D=E7=AC=A6=E5=90=88=E9=A2=84=E6=9C=9F=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangshengwen --- src/ports/skia_ohos/SkFontMgr_ohos.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/ports/skia_ohos/SkFontMgr_ohos.cpp b/src/ports/skia_ohos/SkFontMgr_ohos.cpp index 2b790eda..a8024d5b 100644 --- a/src/ports/skia_ohos/SkFontMgr_ohos.cpp +++ b/src/ports/skia_ohos/SkFontMgr_ohos.cpp @@ -125,6 +125,13 @@ sk_sp SkFontMgr_OHOS::onMatchFamilyStyleCharacter(const char familyN SkString key = defaultFamily; FallbackSetPos* item = nullptr; if (familyName == nullptr) { + SkString sansFamilyName("HarmonyOS Sans SC"); + bool isFallback = false; + int styleIndex = fontConfig->getStyleIndex(sansFamilyName.c_str(), isFallback); + SkTypeface* retTp = fontConfig->getTypeface(styleIndex, style, isFallback); + if (retTp && retTp->unicharToGlyph(character) != 0) { + return sk_ref_sp(retTp); + } item = fallbackForMap.find(defaultFamily); } else { item = fallbackForMap.find(SkString(familyName)); -- Gitee From 80195a04917b9dddbbb0d6fb97791203aaa579f7 Mon Sep 17 00:00:00 2001 From: wangshengwen Date: Sun, 22 Dec 2024 08:38:08 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=B7=A6=E5=8F=B3?= =?UTF-8?q?=E5=BC=95=E5=8F=B7=E9=83=A8=E5=88=86=E5=9C=BA=E6=99=AF=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=E4=B8=8D=E7=AC=A6=E5=90=88=E9=A2=84=E6=9C=9F=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangshengwen --- src/ports/skia_ohos/SkFontMgr_ohos.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/ports/skia_ohos/SkFontMgr_ohos.cpp b/src/ports/skia_ohos/SkFontMgr_ohos.cpp index a8024d5b..31284780 100644 --- a/src/ports/skia_ohos/SkFontMgr_ohos.cpp +++ b/src/ports/skia_ohos/SkFontMgr_ohos.cpp @@ -211,6 +211,18 @@ SkTypeface* SkFontMgr_OHOS::findTypeface(const FallbackSetPos& fallbackItem, con } tps[ret] = i; } + for (character >= 0x2018 && character <= 0x201D) { + for (int i = 0; i <= bcp47Count - 1; i++) { + if (tps[i] == -1) { + continue; + } + const TypefaceSet& tpSet = *(fallbackSet[tps[i]]->typefaceSet.get()); + if (tpSet.size() > 0 && tpSet[0]->unicharToGlyph(character) != 0) { + sk_sp typeface = FontConfig_OHOS::matchFontStyle(tpSet, style); + return SkSafeRef(typeface.get()); + } + } + } // match typeface in families for (int i = bcp47Count - 1; i >= 0; i--) { if (tps[i] == -1) { -- Gitee From 8206a71f659a6d2c8ed2cf06407ad90ed69bc565 Mon Sep 17 00:00:00 2001 From: wangshengwen Date: Mon, 18 Nov 2024 18:39:13 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E5=8F=B3=E6=8B=AC=E5=8F=B7=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=E4=B8=8D=E7=AC=A6=E5=90=88=E9=A2=84=E6=9C=9F=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangshengwen --- src/ports/skia_ohos/SkFontMgr_ohos.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/ports/skia_ohos/SkFontMgr_ohos.cpp b/src/ports/skia_ohos/SkFontMgr_ohos.cpp index 2b790eda..6db1904b 100644 --- a/src/ports/skia_ohos/SkFontMgr_ohos.cpp +++ b/src/ports/skia_ohos/SkFontMgr_ohos.cpp @@ -204,6 +204,18 @@ SkTypeface* SkFontMgr_OHOS::findTypeface(const FallbackSetPos& fallbackItem, con } tps[ret] = i; } + for (character >= 0x2018 && character <= 0x201D) { + for (int i = 0; i <= bcp47Count - 1; i++) { + if (tps[i] == -1) { + continue; + } + const TypefaceSet& tpSet = *(fallbackSet[tps[i]]->typefaceSet.get()); + if (tpSet.size() > 0 && tpSet[0]->unicharToGlyph(character) != 0) { + sk_sp typeface = FontConfig_OHOS::matchFontStyle(tpSet, style); + return SkSafeRef(typeface.get()); + } + } + } // match typeface in families for (int i = bcp47Count - 1; i >= 0; i--) { if (tps[i] == -1) { -- Gitee From 9eab1a32f4a6bf2953a0b15de4ee556861cf4465 Mon Sep 17 00:00:00 2001 From: wsw Date: Sun, 22 Dec 2024 00:46:29 +0000 Subject: [PATCH 4/5] update src/ports/skia_ohos/SkFontMgr_ohos.cpp. Signed-off-by: wsw --- src/ports/skia_ohos/SkFontMgr_ohos.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/ports/skia_ohos/SkFontMgr_ohos.cpp b/src/ports/skia_ohos/SkFontMgr_ohos.cpp index 31284780..6db1904b 100644 --- a/src/ports/skia_ohos/SkFontMgr_ohos.cpp +++ b/src/ports/skia_ohos/SkFontMgr_ohos.cpp @@ -125,13 +125,6 @@ sk_sp SkFontMgr_OHOS::onMatchFamilyStyleCharacter(const char familyN SkString key = defaultFamily; FallbackSetPos* item = nullptr; if (familyName == nullptr) { - SkString sansFamilyName("HarmonyOS Sans SC"); - bool isFallback = false; - int styleIndex = fontConfig->getStyleIndex(sansFamilyName.c_str(), isFallback); - SkTypeface* retTp = fontConfig->getTypeface(styleIndex, style, isFallback); - if (retTp && retTp->unicharToGlyph(character) != 0) { - return sk_ref_sp(retTp); - } item = fallbackForMap.find(defaultFamily); } else { item = fallbackForMap.find(SkString(familyName)); -- Gitee From f659c3d435ba0aa3859e855c6552764cab25e8e1 Mon Sep 17 00:00:00 2001 From: wangshengwen Date: Sun, 22 Dec 2024 11:26:01 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B7=A6=E5=8F=B3?= =?UTF-8?q?=E5=BC=95=E5=8F=B7=E9=83=A8=E5=88=86=E5=9C=BA=E6=99=AF=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=E4=B8=8D=E7=AC=A6=E5=90=88=E9=A2=84=E6=9C=9F=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangshengwen --- src/ports/skia_ohos/SkFontMgr_ohos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ports/skia_ohos/SkFontMgr_ohos.cpp b/src/ports/skia_ohos/SkFontMgr_ohos.cpp index 6db1904b..ca5114b0 100644 --- a/src/ports/skia_ohos/SkFontMgr_ohos.cpp +++ b/src/ports/skia_ohos/SkFontMgr_ohos.cpp @@ -204,7 +204,7 @@ SkTypeface* SkFontMgr_OHOS::findTypeface(const FallbackSetPos& fallbackItem, con } tps[ret] = i; } - for (character >= 0x2018 && character <= 0x201D) { + if (character >= 0x2018 && character <= 0x201D) { for (int i = 0; i <= bcp47Count - 1; i++) { if (tps[i] == -1) { continue; -- Gitee