Prevents matching the fallback script twice.
This commit is contained in:
@@ -308,15 +308,20 @@ namespace Cryville.Common.Font {
|
|||||||
}
|
}
|
||||||
public override IEnumerable<Typeface> MatchLanguage(LanguageId lang, bool distinctFamily = false) {
|
public override IEnumerable<Typeface> MatchLanguage(LanguageId lang, bool distinctFamily = false) {
|
||||||
var supported = MapScriptToTypefaces.Keys.Select(i => new LanguageId(i)).ToList();
|
var supported = MapScriptToTypefaces.Keys.Select(i => new LanguageId(i)).ToList();
|
||||||
|
bool flag = false;
|
||||||
while (_matcher.Match(lang, supported, out var match, out var distance)) {
|
while (_matcher.Match(lang, supported, out var match, out var distance)) {
|
||||||
if (distance > 40) break;
|
if (distance > 40) break;
|
||||||
Logger.Log("main", 0, "UI", "Matching fonts for language {0}, distance = {1}", match, distance);
|
Logger.Log("main", 0, "UI", "Matching fonts for language {0}, distance = {1}", match, distance);
|
||||||
var candidates = MapScriptToTypefaces[match.Script.ToLowerInvariant()];
|
if (match.Script.Equals(UltimateFallbackScript, StringComparison.OrdinalIgnoreCase)) {
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
var candidates = MapScriptToTypefaces[match.Script];
|
||||||
foreach (var typeface in EnumerateTypefaces(candidates, distinctFamily)) {
|
foreach (var typeface in EnumerateTypefaces(candidates, distinctFamily)) {
|
||||||
yield return typeface;
|
yield return typeface;
|
||||||
}
|
}
|
||||||
supported.Remove(match);
|
supported.Remove(match);
|
||||||
}
|
}
|
||||||
|
if (flag) yield break;
|
||||||
Logger.Log("main", 0, "UI", "Matching fallback fonts");
|
Logger.Log("main", 0, "UI", "Matching fallback fonts");
|
||||||
foreach (var typeface in EnumerateTypefaces(MapScriptToTypefaces[UltimateFallbackScript], distinctFamily)) {
|
foreach (var typeface in EnumerateTypefaces(MapScriptToTypefaces[UltimateFallbackScript], distinctFamily)) {
|
||||||
yield return typeface;
|
yield return typeface;
|
||||||
|
|||||||
Reference in New Issue
Block a user