mirror of
https://github.com/aljazceru/njump.git
synced 2025-12-17 06:14:22 +01:00
fix script matching bug.
This commit is contained in:
@@ -18,11 +18,12 @@ import (
|
|||||||
"github.com/pemistahl/lingua-go"
|
"github.com/pemistahl/lingua-go"
|
||||||
)
|
)
|
||||||
|
|
||||||
const nSupportedScripts = 11
|
const nSupportedScripts = 12
|
||||||
|
|
||||||
var (
|
var (
|
||||||
supportedScripts = [nSupportedScripts]language.Script{
|
supportedScripts = [nSupportedScripts]language.Script{
|
||||||
language.Unknown,
|
language.Unknown,
|
||||||
|
language.Latin,
|
||||||
language.Hiragana,
|
language.Hiragana,
|
||||||
language.Katakana,
|
language.Katakana,
|
||||||
language.Hebrew,
|
language.Hebrew,
|
||||||
@@ -62,8 +63,8 @@ func initializeImageDrawingStuff() error {
|
|||||||
).WithLowAccuracyMode().Build()
|
).WithLowAccuracyMode().Build()
|
||||||
|
|
||||||
// script detector material
|
// script detector material
|
||||||
for ssi, script := range supportedScripts {
|
for _, srange := range language.ScriptRanges {
|
||||||
for _, srange := range language.ScriptRanges {
|
for ssi, script := range supportedScripts {
|
||||||
if srange.Script == script {
|
if srange.Script == script {
|
||||||
scriptRanges = append(scriptRanges, ScriptRange{
|
scriptRanges = append(scriptRanges, ScriptRange{
|
||||||
Start: srange.Start,
|
Start: srange.Start,
|
||||||
@@ -86,16 +87,17 @@ func initializeImageDrawingStuff() error {
|
|||||||
return face
|
return face
|
||||||
}
|
}
|
||||||
fontMap[0] = loadFont("fonts/NotoSans.ttf")
|
fontMap[0] = loadFont("fonts/NotoSans.ttf")
|
||||||
fontMap[1] = loadFont("fonts/NotoSansJP.ttf")
|
fontMap[1] = fontMap[0]
|
||||||
fontMap[2] = fontMap[1]
|
fontMap[2] = loadFont("fonts/NotoSansJP.ttf")
|
||||||
fontMap[3] = loadFont("fonts/NotoSansHebrew.ttf")
|
fontMap[3] = fontMap[1]
|
||||||
fontMap[4] = loadFont("fonts/NotoSansThai.ttf")
|
fontMap[4] = loadFont("fonts/NotoSansHebrew.ttf")
|
||||||
fontMap[5] = loadFont("fonts/NotoSansArabic.ttf")
|
fontMap[5] = loadFont("fonts/NotoSansThai.ttf")
|
||||||
fontMap[6] = loadFont("fonts/NotoSansDevanagari.ttf")
|
fontMap[6] = loadFont("fonts/NotoSansArabic.ttf")
|
||||||
fontMap[7] = loadFont("fonts/NotoSansBengali.ttf")
|
fontMap[7] = loadFont("fonts/NotoSansDevanagari.ttf")
|
||||||
fontMap[8] = loadFont("fonts/NotoSansJavanese.ttf")
|
fontMap[8] = loadFont("fonts/NotoSansBengali.ttf")
|
||||||
fontMap[9] = loadFont("fonts/NotoSansSC.ttf")
|
fontMap[9] = loadFont("fonts/NotoSansJavanese.ttf")
|
||||||
fontMap[10] = loadFont("fonts/NotoSansKR.ttf")
|
fontMap[10] = loadFont("fonts/NotoSansSC.ttf")
|
||||||
|
fontMap[11] = loadFont("fonts/NotoSansKR.ttf")
|
||||||
emojiFont = loadFont("fonts/NotoEmoji.ttf")
|
emojiFont = loadFont("fonts/NotoEmoji.ttf")
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@@ -167,7 +169,7 @@ func getLanguageAndScriptAndDirectionAndFont(paragraph []rune) (
|
|||||||
for l := 0; l < nLetters; l++ {
|
for l := 0; l < nLetters; l++ {
|
||||||
idx := lookupScript(paragraph[l])
|
idx := lookupScript(paragraph[l])
|
||||||
ranking[idx]++
|
ranking[idx]++
|
||||||
if l > threshold && ranking[idx] > threshold {
|
if idx > 0 && l > threshold && ranking[idx] > threshold {
|
||||||
script = supportedScripts[idx]
|
script = supportedScripts[idx]
|
||||||
face = fontMap[idx]
|
face = fontMap[idx]
|
||||||
goto gotScript
|
goto gotScript
|
||||||
@@ -249,7 +251,7 @@ func lookupScript(r rune) int {
|
|||||||
} else if entry.End < r {
|
} else if entry.End < r {
|
||||||
i = h + 1
|
i = h + 1
|
||||||
} else {
|
} else {
|
||||||
return h // position in supportedScripts
|
return entry.Pos // position in supportedScripts
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0 // unknown
|
return 0 // unknown
|
||||||
|
|||||||
Reference in New Issue
Block a user