From b8600ba205b406f059837a8fbea54c743908229d Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Mon, 25 Dec 2023 23:42:14 -0300 Subject: [PATCH] add syriac, hindi, add default language and direction maps based on script. --- fonts/NotoSansSyriac.ttf | Bin 0 -> 84324 bytes image_utils.go | 58 ++++++++++++++++++++++++++++++--------- 2 files changed, 45 insertions(+), 13 deletions(-) create mode 100644 fonts/NotoSansSyriac.ttf diff --git a/fonts/NotoSansSyriac.ttf b/fonts/NotoSansSyriac.ttf new file mode 100644 index 0000000000000000000000000000000000000000..153a6336760467f9f5af64fe79a3f771f9afaa0e GIT binary patch literal 84324 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 Ph7Fl^ORYZDVg7#r{Lj%& literal 0 HcmV?d00001 diff --git a/image_utils.go b/image_utils.go index e1de954..26f457d 100644 --- a/image_utils.go +++ b/image_utils.go @@ -19,7 +19,7 @@ import ( "github.com/pemistahl/lingua-go" ) -const nSupportedScripts = 12 +const nSupportedScripts = 13 var ( supportedScripts = [nSupportedScripts]language.Script{ @@ -35,12 +35,45 @@ var ( language.Javanese, language.Han, language.Hangul, + language.Syriac, } detector lingua.LanguageDetector scriptRanges []ScriptRange fontMap [nSupportedScripts]font.Face emojiFont font.Face + + defaultLanguageMap = [nSupportedScripts]language.Language{ + "en-us", + "en-us", + "ja", + "ja", + "he", + "th", + "ar", + "hi", + "bn", + "jv", + "zh", + "ko", + "syr", + } + + directionMap = [nSupportedScripts]di.Direction{ + di.DirectionLTR, + di.DirectionLTR, + di.DirectionLTR, + di.DirectionLTR, + di.DirectionRTL, + di.DirectionLTR, + di.DirectionRTL, + di.DirectionLTR, + di.DirectionLTR, + di.DirectionLTR, + di.DirectionLTR, + di.DirectionLTR, + di.DirectionRTL, + } ) type ScriptRange struct { @@ -60,6 +93,7 @@ func initializeImageDrawingStuff() error { lingua.Hebrew, lingua.Arabic, lingua.Bengali, + lingua.Hindi, lingua.Korean, ).WithLowAccuracyMode().Build() @@ -168,28 +202,26 @@ func getLanguageAndScriptAndDirectionAndFont(paragraph []rune) ( var face font.Face var idx int for l := 0; l < nLetters; l++ { - idx := lookupScript(paragraph[l]) - ranking[idx]++ - if idx > 0 && l > threshold && ranking[idx] > threshold { - script = supportedScripts[idx] - face = fontMap[idx] - goto gotScript + rnidx := lookupScript(paragraph[l]) + ranking[rnidx]++ + if idx > 0 && l > threshold && ranking[rnidx] > threshold { + idx = rnidx + goto gotScriptIndex } } idx = maxIndex(ranking[:]) + +gotScriptIndex: script = supportedScripts[idx] face = fontMap[idx] - -gotScript: - direction := di.DirectionLTR - if script == language.Arabic { - direction = di.DirectionRTL - } + direction := directionMap[idx] lng := language.Language("en-us") lang, ok := detector.DetectLanguageOf(string(paragraph)) if ok { lng = language.Language(lang.IsoCode639_1().String()) + } else { + lng = defaultLanguageMap[idx] } return lng, script, direction, face