mirror of
https://github.com/jayfunc/BetterLyrics.git
synced 2026-01-12 10:54:55 +08:00
fix: Set CJK and latin font family individually
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
using Microsoft.Graphics.Canvas.Text;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace BetterLyrics.WinUI3.Helper
|
||||||
|
{
|
||||||
|
public static class CanvasTextLayoutExtensions
|
||||||
|
{
|
||||||
|
public static void SetFontFamily(this CanvasTextLayout? layout, string text, string cjk, string latin)
|
||||||
|
{
|
||||||
|
if (layout == null) return;
|
||||||
|
|
||||||
|
for (int i = 0; i < text.Length; i++)
|
||||||
|
{
|
||||||
|
layout.SetFontFamily(i, 1, LanguageHelper.IsCJK(text[i]) ? cjk : latin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -130,6 +130,11 @@ namespace BetterLyrics.WinUI3.Helper
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsCJK(char ch)
|
||||||
|
{
|
||||||
|
return IsCJK(ch.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
public static string GetDefaultTargetTranslationLanguageCode()
|
public static string GetDefaultTargetTranslationLanguageCode()
|
||||||
{
|
{
|
||||||
var found = SupportedTranslationTargetLanguages.Find(x => ApplicationLanguages.Languages.FirstOrDefault()?.Contains(x.LanguageCode) == true);
|
var found = SupportedTranslationTargetLanguages.Find(x => ApplicationLanguages.Languages.FirstOrDefault()?.Contains(x.LanguageCode) == true);
|
||||||
|
|||||||
@@ -143,11 +143,11 @@ namespace BetterLyrics.WinUI3.Models
|
|||||||
VerticalAlignment = CanvasVerticalAlignment.Top,
|
VerticalAlignment = CanvasVerticalAlignment.Top,
|
||||||
FontSize = phoneticTextFontSize,
|
FontSize = phoneticTextFontSize,
|
||||||
FontWeight = fontWeight.ToFontWeight(),
|
FontWeight = fontWeight.ToFontWeight(),
|
||||||
FontFamily = LanguageHelper.IsCJK(PhoneticText) ? fontFamilyCJK : fontFamilyWestern,
|
|
||||||
}, (float)maxWidth, (float)maxHeight)
|
}, (float)maxWidth, (float)maxHeight)
|
||||||
{
|
{
|
||||||
HorizontalAlignment = type.ToCanvasHorizontalAlignment(),
|
HorizontalAlignment = type.ToCanvasHorizontalAlignment(),
|
||||||
};
|
};
|
||||||
|
PhoneticCanvasTextLayout.SetFontFamily(PhoneticText, fontFamilyCJK, fontFamilyWestern);
|
||||||
}
|
}
|
||||||
|
|
||||||
OriginalCanvasTextLayout = new CanvasTextLayout(control, OriginalText, new CanvasTextFormat
|
OriginalCanvasTextLayout = new CanvasTextLayout(control, OriginalText, new CanvasTextFormat
|
||||||
@@ -156,11 +156,11 @@ namespace BetterLyrics.WinUI3.Models
|
|||||||
VerticalAlignment = CanvasVerticalAlignment.Top,
|
VerticalAlignment = CanvasVerticalAlignment.Top,
|
||||||
FontSize = originalTextFontSize,
|
FontSize = originalTextFontSize,
|
||||||
FontWeight = fontWeight.ToFontWeight(),
|
FontWeight = fontWeight.ToFontWeight(),
|
||||||
FontFamily = LanguageHelper.IsCJK(OriginalText) ? fontFamilyCJK : fontFamilyWestern,
|
|
||||||
}, (float)maxWidth, (float)maxHeight)
|
}, (float)maxWidth, (float)maxHeight)
|
||||||
{
|
{
|
||||||
HorizontalAlignment = type.ToCanvasHorizontalAlignment()
|
HorizontalAlignment = type.ToCanvasHorizontalAlignment()
|
||||||
};
|
};
|
||||||
|
OriginalCanvasTextLayout.SetFontFamily(OriginalText, fontFamilyCJK, fontFamilyWestern);
|
||||||
|
|
||||||
if (createTranslated && TranslatedText != "")
|
if (createTranslated && TranslatedText != "")
|
||||||
{
|
{
|
||||||
@@ -170,11 +170,11 @@ namespace BetterLyrics.WinUI3.Models
|
|||||||
VerticalAlignment = CanvasVerticalAlignment.Top,
|
VerticalAlignment = CanvasVerticalAlignment.Top,
|
||||||
FontSize = translatedTextFontSize,
|
FontSize = translatedTextFontSize,
|
||||||
FontWeight = fontWeight.ToFontWeight(),
|
FontWeight = fontWeight.ToFontWeight(),
|
||||||
FontFamily = LanguageHelper.IsCJK(TranslatedText) ? fontFamilyCJK : fontFamilyWestern,
|
|
||||||
}, (float)maxWidth, (float)maxHeight)
|
}, (float)maxWidth, (float)maxHeight)
|
||||||
{
|
{
|
||||||
HorizontalAlignment = type.ToCanvasHorizontalAlignment()
|
HorizontalAlignment = type.ToCanvasHorizontalAlignment()
|
||||||
};
|
};
|
||||||
|
TranslatedCanvasTextLayout.SetFontFamily(TranslatedText, fontFamilyCJK, fontFamilyWestern);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user