fix Thai characters

master
reng 3 years ago
parent 8024428887
commit ea42c1cbfb
  1. 682
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/PaintingNavigator.unity
  2. 48
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/PaintingNavigator/Script/ThaiAdjust.cs
  3. 11
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/PaintingNavigator/Script/ThaiAdjust.cs.meta
  4. 72
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/Resources/I2Languages.asset
  5. 1164
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/Resources/NotoSansThai-Regular-Adjusted SDF.asset
  6. 8
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/Resources/NotoSansThai-Regular-Adjusted SDF.asset.meta
  7. 5
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages.meta
  8. 5
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjuster.meta
  9. 43
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjuster.unitypackage.json
  10. 4
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjuster.unitypackage.json.meta
  11. 148
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjuster/ThaiFontAdjuster.cs
  12. 12
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjuster/ThaiFontAdjuster.cs.meta
  13. 5
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjusterDemo.meta
  14. BIN
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjusterDemo/Garuda.ttf
  15. 19
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjusterDemo/Garuda.ttf.meta
  16. BIN
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjusterDemo/Kinnari.ttf
  17. 19
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjusterDemo/Kinnari.ttf.meta
  18. BIN
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjusterDemo/Loma.ttf
  19. 19
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjusterDemo/Loma.ttf.meta
  20. BIN
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjusterDemo/Norasi.ttf
  21. 19
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjusterDemo/Norasi.ttf.meta
  22. BIN
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjusterDemo/NotoSansThai-Regular-Adjusted.ttf
  23. 19
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjusterDemo/NotoSansThai-Regular-Adjusted.ttf.meta
  24. 53
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjusterDemo/ThaiFontAdjusterDemo.cs
  25. 12
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjusterDemo/ThaiFontAdjusterDemo.cs.meta
  26. 1706
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjusterDemo/ThaiFontAdjusterDemo.unity
  27. 8
      03_RoyalGallery/Unity-19050-03_RoyalGallery_Navigator_PC/19050-03_RoyalGallery_Navigator_PC/Assets/UnityPackages/ThaiFontAdjusterDemo/ThaiFontAdjusterDemo.unity.meta

@ -0,0 +1,48 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using System;
using System.Text;
namespace UltraCombos.Marvel.DrawHeroes
{
public class ThaiAdjust : MonoBehaviour
{
void Start()
{
Debug.Log("start");
fix();
}
void Update()
{
// fix();
}
void fix(){
var current=I2.Loc.LocalizationManager.CurrentLanguage;
var text=GetComponent<TMP_Text>();
if(current!="Thai"){
text.margin=new Vector4(0,0,0,0);
return;
}
var adjust=ThaiFontAdjuster.Adjust(text.text);
bool isBold = (text.fontStyle & FontStyles.Bold) != 0;
if(isBold)
text.fontStyle ^= FontStyles.Bold;
text.margin=text.margin+new Vector4(0,-text.fontSize*.3f,0,0);
text.SetText(adjust);
}
}
}

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 135d7ee3b778c5641bd9b2464cc723de
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -15,33 +15,42 @@ MonoBehaviour:
mSource:
UserAgreesToHaveItOnTheScene: 0
UserAgreesToHaveItInsideThePluginsFolder: 0
GoogleLiveSyncIsUptoDate: 0
GoogleLiveSyncIsUptoDate: 1
mTerms:
- Term: font
TermType: 9
Description:
Languages:
- ITC Legacy Sans Std Bold
- NotoSerifTC-Regular SDF
- NotoSerifThai-Regular SDF
- ITC Legacy Sans Std Book SDF
- NotoSerifTC-Regular
- NotoSansThai-Regular-Adjusted SDF
Flags: 000000
Languages_Touch: []
- Term: font-language
TermType: 9
Description:
Languages:
- NotoSerifThai-Regular SDF
- ITC Legacy Sans Std Book SDF
- NotoSansThai-Regular-Adjusted SDF
- ITC Legacy Sans Std Book
- ITC Legacy Sans Std Book SDF
Flags: 000000
Languages_Touch: []
- Term: font-title
TermType: 9
Description:
Languages:
- CitrusGothicInline-Regular
-
- NotoSerifThai-Regular
Flags: 000000
Languages_Touch: []
- Term: text-are-you-done
TermType: 0
Description:
Languages:
- Are you done with coloring your work?
- "\u96E2\u958B\u5F8C\u5C07\u7121\u6CD5\u8FD4\u56DE\u4FEE\u6539\r\n\u78BA\u8A8D\u96E2\u958B\u9801\u9762?"
- "\u0E43\u0E0A\u0E48, \u0E42\u0E1B\u0E23\u0E14\u0E14\u0E33\u0E40\u0E19\u0E34\u0E19\u0E01\u0E32\u0E23"
- "\u0E04\u0E38\u0E13\u0E23\u0E30\u0E1A\u0E32\u0E22\u0E2A\u0E35\u0E40\u0E2A\u0E23\u0E47\u0E08\u0E2A\u0E34\u0E49\u0E19\u0E41\u0E25\u0E49\u0E27\u0E43\u0E0A\u0E48\u0E2B\u0E23\u0E37\u0E2D\u0E44\u0E21\u0E48"
Flags: 000000
Languages_Touch: []
- Term: text-artwork
@ -68,7 +77,7 @@ MonoBehaviour:
Languages:
- Autograph Your Work
- "\u70BA\u4F60\u7684\u4F5C\u54C1\u7C3D\u540D"
- "\u0E25\u0E32\u0E22\u0E40\u0E0B\u0E19\u0E15\u0E4C\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13\r"
- "\u0E40\u0E0B\u0E47\u0E19\u0E0A\u0E37\u0E48\u0E2D\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13"
Flags: 000000
Languages_Touch: []
- Term: text-cancel
@ -149,7 +158,7 @@ MonoBehaviour:
Languages:
- GOT IT!
- "\u78BA\u8A8D"
- "\u0E23\u0E31\u0E1A\u0E2A\u0E34\u0E19\u0E04\u0E49\u0E32"
- "\u0E23\u0E31\u0E1A\u0E17\u0E23\u0E32\u0E1A"
Flags: 000000
Languages_Touch: []
- Term: text-language
@ -167,7 +176,7 @@ MonoBehaviour:
Languages:
- You are about to leave the coloring page
- "\u60A8\u5373\u5C07\u96E2\u958B\u8457\u8272\u9801\u9762"
- "\u0E04\u0E38\u0E13\u0E23\u0E30\u0E1A\u0E32\u0E22\u0E2A\u0E35\u0E40\u0E2A\u0E23\u0E47\u0E08\u0E2A\u0E34\u0E49\u0E19\u0E41\u0E25\u0E49\u0E27\u0E43\u0E0A\u0E48\u0E2B\u0E23\u0E37\u0E2D\u0E44\u0E21\u0E48"
- "\u0E04\u0E38\u0E13\u0E01\u0E33\u0E25\u0E31\u0E07\u0E08\u0E30\u0E2D\u0E2D\u0E01\u0E08\u0E32\u0E01\u0E2A\u0E48\u0E27\u0E19\u0E07\u0E32\u0E19\u0E23\u0E30\u0E1A\u0E32\u0E22\u0E2A\u0E35"
Flags: 000000
Languages_Touch: []
- Term: text-no-go-back
@ -176,7 +185,7 @@ MonoBehaviour:
Languages:
- No, Go Back
- "\u4E0D, \u7E7C\u7E8C\u8457\u8272"
- "\u0E44\u0E21\u0E48\u0E43\u0E0A\u0E48, \u0E42\u0E1B\u0E23\u0E14\u0E22\u0E49\u0E2D\u0E19\u0E01\u0E25\u0E31\u0E1A"
- "\u0E44\u0E21\u0E48\u0E43\u0E0A\u0E48\_ \u0E42\u0E1B\u0E23\u0E14\u0E22\u0E49\u0E2D\u0E19\u0E01\u0E25\u0E31\u0E1A"
Flags: 000000
Languages_Touch: []
- Term: text-notice
@ -194,7 +203,7 @@ MonoBehaviour:
Languages:
- Preview your autograph
- "\u7C3D\u540D\u9810\u89BD"
- "\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A\u0E25\u0E32\u0E22\u0E40\u0E0B\u0E19\u0E15\u0E4C\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13"
- "\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A\u0E25\u0E32\u0E22\u0E40\u0E0B\u0E47\u0E19\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13"
Flags: 000000
Languages_Touch: []
- Term: text-print
@ -203,7 +212,7 @@ MonoBehaviour:
Languages:
- Print
- "\u5217\u5370"
- "\u0E1E\u0E34\u0E21\u0E1E\u0E4C\u0E20\u0E32\u0E1E"
- "\u0E2A\u0E31\u0E48\u0E07\u0E1E\u0E34\u0E21\u0E1E\u0E4C"
Flags: 000000
Languages_Touch: []
- Term: text-print-code
@ -211,7 +220,7 @@ MonoBehaviour:
Description:
Languages:
- Print Code
- "\u5217\u5370\u78BC"
- "\u4F5C\u54C1\u7DE8\u78BC"
- "\u0E23\u0E2B\u0E31\u0E2A\u0E01\u0E32\u0E23\u0E1E\u0E34\u0E21\u0E1E\u0E4C\u0E23\u0E39\u0E1B"
Flags: 000000
Languages_Touch: []
@ -219,9 +228,9 @@ MonoBehaviour:
TermType: 0
Description:
Languages:
- You can purchase the with the print code at the counter
- You can claim a printed copy with this print code at the counter
- "\u8ACB\u8A18\u4E0B\u60A8\u7684\u5217\u5370\u78BC\uFF0C\u60A8\u53EF\u4EE5\u5728\u5217\u5370\u6A5F\u53F0\u8655\u8CFC\u8CB7\u60A8\u7684\u4F5C\u54C1\u3002"
- "\u0E04\u0E38\u0E13\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E0A\u0E33\u0E23\u0E30\u0E14\u0E49\u0E27\u0E22\u0E23\u0E2B\u0E31\u0E2A\u0E19\u0E35\u0E49\u0E17\u0E35\u0E48\u0E40\u0E04\u0E32\u0E40\u0E15\u0E2D\u0E23\u0E4C"
- "\u0E42\u0E1B\u0E23\u0E14\u0E19\u0E33\u0E23\u0E2B\u0E31\u0E2A\u0E19\u0E35\u0E49\u0E44\u0E1B\u0E17\u0E35\u0E48\u0E40\u0E04\u0E32\u0E40\u0E15\u0E2D\u0E23\u0E4C\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E1E\u0E34\u0E21\u0E1E\u0E4C\u0E20\u0E32\u0E1E"
Flags: 000000
Languages_Touch: []
- Term: text-select
@ -230,7 +239,7 @@ MonoBehaviour:
Languages:
- "Select Coloring Piece\r"
- "\u9078\u64C7\u756B\u7D19"
- "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E0A\u0E34\u0E49\u0E19\u0E07\u0E32\u0E19\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E23\u0E30\u0E1A\u0E32\u0E22\u0E2A\u0E35"
- "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E23\u0E39\u0E1B\u0E20\u0E32\u0E1E\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E23\u0E30\u0E1A\u0E32\u0E22\u0E2A\u0E35"
Flags: 000000
Languages_Touch: []
- Term: text-select-or-proceed
@ -239,7 +248,7 @@ MonoBehaviour:
Languages:
- "Select This Piece and Proceed? \r"
- "\u9078\u64C7\u6B64\u5F35\u756B\u7D19\u6A23\u5F0F\r\n\u4E26\u958B\u59CB\u8457\u8272\uFF1F"
- "\u0E14\u0E33\u0E40\u0E19\u0E34\u0E19\u0E01\u0E32\u0E23\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E0A\u0E34\u0E49\u0E19\u0E19\u0E35\u0E49\u0E43\u0E0A\u0E48\u0E2B\u0E23\u0E34\u0E2D\u0E44\u0E21\u0E48?\r"
- "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E23\u0E39\u0E1B\u0E20\u0E32\u0E1E\u0E19\u0E35\u0E49\u0E43\u0E0A\u0E48\u0E2B\u0E23\u0E37\u0E2D\u0E44\u0E21\u0E48"
Flags: 000000
Languages_Touch: []
- Term: text-start
@ -257,18 +266,25 @@ MonoBehaviour:
Languages:
- Time Left
- "\u64CD\u4F5C\u6642\u9593"
- "\u0E40\u0E27\u0E25\u0E32\u0E17\u0E35\u0E48\u0E40\u0E2B\u0E25\u0E37\u0E2D"
- "\u0E40\u0E27\u0E25\u0E32\u0E04\u0E07\u0E40\u0E2B\u0E25\u0E37\u0E2D"
Flags: 000000
Languages_Touch: []
- Term: text-title
TermType: 0
Description:
Languages:
- "Coloring \nArendelle"
- 'Coloring
Arendelle'
- "\u0E07\u0E32\u0E19\u0E23\u0E30\u0E1A\u0E32\u0E22\u0E2A\u0E35\nArendelle"
- Coloring
- Coloring
- "\u0E23\u0E30\u0E1A\u0E32\u0E22\u0E2A\u0E35"
Flags: 000000
Languages_Touch: []
- Term: text-title-2
TermType: 0
Description:
Languages:
- Arendelle
- Arendelle
- Arendelle
Flags: 000000
Languages_Touch: []
- Term: text-upload
@ -277,7 +293,7 @@ MonoBehaviour:
Languages:
- Upload Your Work
- "\u4F5C\u54C1\u4E0A\u50B3"
- "\u0E04\u0E38\u0E13\u0E01\u0E33\u0E25\u0E31\u0E07\u0E08\u0E30\u0E2D\u0E2D\u0E01\u0E08\u0E32\u0E01\u0E2A\u0E48\u0E27\u0E19\u0E07\u0E32\u0E19\u0E23\u0E30\u0E1A\u0E32\u0E22\u0E2A\u0E35"
- "\u0E2D\u0E31\u0E1E\u0E42\u0E2B\u0E25\u0E14\u0E1C\u0E25\u0E07\u0E32\u0E19"
Flags: 000000
Languages_Touch: []
- Term: text-upload-comlete
@ -295,7 +311,7 @@ MonoBehaviour:
Languages:
- Yes, Proceed
- "\u662F\u7684, \u96E2\u958B"
- "\u0E43\u0E0A\u0E48, \u0E42\u0E1B\u0E23\u0E14\u0E14\u0E33\u0E40\u0E19\u0E34\u0E19\u0E01\u0E32\u0E23"
- "\u0E43\u0E0A\u0E48 \u0E14\u0E33\u0E40\u0E19\u0E34\u0E19\u0E01\u0E32\u0E23\u0E15\u0E48\u0E2D"
Flags: 000000
Languages_Touch: []
- Term: text-your-print-code
@ -322,10 +338,10 @@ MonoBehaviour:
Flags: 0
IgnoreDeviceLanguage: 0
_AllowUnloadingLanguages: 0
Google_WebServiceURL: https://script.google.com/a/ultracombos.com/macros/s/AKfycbyk2Yccrnx3EVMkCb9kaAWwCbNhHaaMJ_IHCz4b0Q/exec
Google_WebServiceURL: https://script.google.com/macros/s/AKfycbweo_t30D7jMXOIQ37YCgL4mpENM85R2SSZEUmLwaUNjGn-VvtxxQmEqWGrdjmRzOcrDA/exec
Google_SpreadsheetKey: 1oFdylZscwejvDmC6A168yyoGL6CsoheoavDQYqTzvhI
Google_SpreadsheetName: I2Loc - Frozen2_RoyalGallery
Google_LastUpdatedVersion: 1669691067856
Google_LastUpdatedVersion: 1679305009154
Google_Password:
GoogleUpdateFrequency: 1
GoogleInEditorCheckFrequency: 1

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 26a4738faf676e540920013faa4d9c24
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: c6f56356a2b35684b5f54f789b789d3e
folderAsset: yes
DefaultImporter:
userData:

@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: 8b489cc2a2615db991ab2bfbb37404b6
folderAsset: yes
DefaultImporter:
userData:

@ -0,0 +1,43 @@
{
"Id": "ThaiFontAdjuster",
"Version": "1.0.0",
"Authors": [
"Esun Kim"
],
"Owners": [
"Esun Kim"
],
"Description": "Utility to render Thai text correctly in Unity3D, especially for positioning tone mark.",
"MergedDependencies": {},
"Files": [
"Assets/UnityPackages/ThaiFontAdjuster/ThaiFontAdjuster.cs",
{
"Target": "Assets/UnityPackages/ThaiFontAdjusterDemo/Garuda.ttf",
"Extra": true
},
{
"Target": "Assets/UnityPackages/ThaiFontAdjusterDemo/Kinnari.ttf",
"Extra": true
},
{
"Target": "Assets/UnityPackages/ThaiFontAdjusterDemo/Loma.ttf",
"Extra": true
},
{
"Target": "Assets/UnityPackages/ThaiFontAdjusterDemo/Norasi.ttf",
"Extra": true
},
{
"Target": "Assets/UnityPackages/ThaiFontAdjusterDemo/NotoSansThai-Regular-Adjusted.ttf",
"Extra": true
},
{
"Target": "Assets/UnityPackages/ThaiFontAdjusterDemo/ThaiFontAdjusterDemo.cs",
"Extra": true
},
{
"Target": "Assets/UnityPackages/ThaiFontAdjusterDemo/ThaiFontAdjusterDemo.unity",
"Extra": true
}
]
}

@ -0,0 +1,148 @@
using System.Text;
public static class ThaiFontAdjuster
{
public static bool IsThaiString(string s)
{
var length = s.Length;
for (var i = 0; i < length; i++)
{
var c = s[i];
if (c >= '\x0E00' && c <= '\x0E7F')
return true;
}
return false;
}
// ========== EXTENDED CHARACTER TABLE ==========
// F700: uni0E10.descless (base.descless)
// F701~04: uni0E34~37.left (upper.left)
// F705~09: uni0E48~4C.lowleft (top.lowleft)
// F70A~0E: uni0E48~4C.low (top.low)
// F70F: uni0E0D.descless (base.descless)
// F710~12: uni0E31,4D,47.left (upper.left)
// F713~17: uni0E48~4C.left (top.left)
// F718~1A: uni0E38~3A.low (lower.low)
// ==============================================
public static string Adjust(string s)
{
// http://www.bakoma-tex.com/doc/fonts/enc/c90/c90.pdf
var length = s.Length;
var sb = new StringBuilder(length);
for (var i = 0; i < length; i++)
{
var c = s[i];
// [base] ~ [top]
if (IsTop(c) && i > 0)
{
// [base] [top] -> [base] [top.low]
// [base] [lower] [top] -> [base] [lower] [top.low]
// [base.asc] [top] -> [base.asc] [top.lowleft]
// [base.asc] [lower] [top] -> [base.asc] [lower] [top.lowleft]
var b = s[i - 1];
if (IsLower(b) && i > 1)
b = s[i - 2];
if (IsBase(b))
{
var followingNikhahit = (i < length - 1 && (s[i + 1] == '\x0E33' || s[i + 1] == '\x0E4D'));
if (IsBaseAsc(b))
{
if (followingNikhahit)
{
// [base.asc] [top] [sara am] -> [base.asc] [nikhahit] [top.left] [sara aa]
c = (char)(c + ('\xF713' - '\x0E48'));
sb.Append('\xF711');
sb.Append(c);
if (s[i + 1] == '\x0E33')
sb.Append('\x0E32');
i += 1;
continue;
}
else
{
c = (char)(c + ('\xF705' - '\x0E48'));
}
}
else
{
if (followingNikhahit == false)
c = (char)(c + ('\xF70A' - '\x0E48'));
}
}
// [base.asc] [upper] [top] -> [base.asc] [upper] [top.left]
if (i > 1 && IsUpper(s[i - 1]) && IsBaseAsc(s[i - 2]))
{
c = (char)(c + ('\xF713' - '\x0E48'));
}
}
// [base.asc] [upper] -> [base.asc] [upper-left]
else if (IsUpper(c) && i > 0 && IsBaseAsc(s[i - 1]))
{
switch (c)
{
case '\x0E31': c = '\xF710'; break;
case '\x0E34': c = '\xF701'; break;
case '\x0E35': c = '\xF702'; break;
case '\x0E36': c = '\xF703'; break;
case '\x0E37': c = '\xF704'; break;
case '\x0E4D': c = '\xF711'; break;
case '\x0E47': c = '\xF712'; break;
}
}
// [base.desc] [lower] -> [base.desc] [lower.low]
else if (IsLower(c) && i > 0 && IsBaseDesc(s[i - 1]))
{
c = (char)(c + ('\xF718' - '\x0E38'));
}
// [YO YING] [lower] -> [YO YING w/o lower] [lower]
else if (c == '\x0E0D' && i < length - 1 && IsLower(s[i + 1]))
{
c = '\xF70F';
}
// [THO THAN] [lower] -> [THO THAN w/o lower] [lower]
else if (c == '\x0E10' && i < length - 1 && IsLower(s[i + 1]))
{
c = '\xF700';
}
sb.Append(c);
}
return sb.ToString();
}
private static bool IsBase(char c)
{
return (c >= '\x0E01' && c <= '\x0E2F') || c == '\x0E30' || c == '\x0E40' || c == '\x0E41';
}
private static bool IsBaseDesc(char c)
{
return c == '\x0E0E' || c == '\x0E0F';
}
private static bool IsBaseAsc(char c)
{
return c == '\x0E1B' || c == '\x0E1D' || c == '\x0E1F' || c == '\x0E2C';
}
private static bool IsTop(char c)
{
// Tone Mark, THANTHAKHAT
return c >= '\x0E48' && c <= '\x0E4C';
}
private static bool IsLower(char c)
{
// SARA U, SARA UU, PHINTHU
return c >= '\x0E38' && c <= '\x0E3A';
}
private static bool IsUpper(char c)
{
return c == '\x0E31' || c == '\x0E34' || c == '\x0E35' || c == '\x0E36' ||
c == '\x0E37' || c == '\x0E47' || c == '\x0E4D';
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 9077f203dcc94c44485127d06287261a
timeCreated: 1454134178
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: 68362256183153cb96677309d0c4c4a2
folderAsset: yes
DefaultImporter:
userData:

@ -0,0 +1,19 @@
fileFormatVersion: 2
guid: 150d3e88cbefb184388ba52188cfe2c2
timeCreated: 1454159000
licenseType: Pro
TrueTypeFontImporter:
serializedVersion: 2
fontSize: 16
forceTextureCase: -2
characterSpacing: 1
characterPadding: 0
includeFontData: 1
use2xBehaviour: 0
fontNames: []
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,19 @@
fileFormatVersion: 2
guid: d1ad354a98fa5f3499d7f24a4214a230
timeCreated: 1454159000
licenseType: Pro
TrueTypeFontImporter:
serializedVersion: 2
fontSize: 16
forceTextureCase: -2
characterSpacing: 1
characterPadding: 0
includeFontData: 1
use2xBehaviour: 0
fontNames: []
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,19 @@
fileFormatVersion: 2
guid: 673976873f7ccf946b7a36125644fe54
timeCreated: 1454159000
licenseType: Pro
TrueTypeFontImporter:
serializedVersion: 2
fontSize: 16
forceTextureCase: -2
characterSpacing: 1
characterPadding: 0
includeFontData: 1
use2xBehaviour: 0
fontNames: []
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,19 @@
fileFormatVersion: 2
guid: 14e4f1fd302790444b92953ca92a5d86
timeCreated: 1454159000
licenseType: Pro
TrueTypeFontImporter:
serializedVersion: 2
fontSize: 16
forceTextureCase: -2
characterSpacing: 1
characterPadding: 0
includeFontData: 1
use2xBehaviour: 0
fontNames: []
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,19 @@
fileFormatVersion: 2
guid: 1bd51dcfff236b949915f17ee6c191bd
timeCreated: 1454139571
licenseType: Pro
TrueTypeFontImporter:
serializedVersion: 2
fontSize: 16
forceTextureCase: -2
characterSpacing: 1
characterPadding: 0
includeFontData: 1
use2xBehaviour: 0
fontNames: []
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,53 @@
using UnityEngine;
using UnityEngine.UI;
public class ThaiFontAdjusterDemo : MonoBehaviour
{
public Dropdown FontDropdown;
public Font[] Fonts;
public Text OriginalText;
public Text AdjustedText;
private void Start()
{
PrepareFontDropdown();
ShowText();
}
private void PrepareFontDropdown()
{
FontDropdown.options.Clear();
foreach (var font in Fonts)
FontDropdown.options.Add(new Dropdown.OptionData(font.name));
FontDropdown.captionText.text = Fonts[0].name;
}
public void OnFontDropdownValueChange()
{
ShowText();
}
private void ShowText()
{
var s =
// top -> top.low
"\x0E01\x0E34 \x0E01\x0E4C \x0E01\x0E38\x0E4C \x0E01\x0E34\x0E4C \x0E01\x0E4C\x0E33".Replace(" ", "") + " " +
// top -> top.lowleft | top.left
"\x0E1B\x0E34 \x0E1B\x0E4C \x0E1B\x0E38\x0E4C \x0E1B\x0E34\x0E4C \x0E1B\x0E4C\x0E33".Replace(" ", "") + " " +
// lower -> lower.low
"\x0E0E\x0E38 \x0E0F\x0E38".Replace(" ", "") + " " +
// base.desclike -> base.descless
"\x0E01\x0E38 \x0E0D\x0E38 \x0E10\x0E38".Replace(" ", "") + " ";
ShowText(s);
}
private void ShowText(string s)
{
var font = Fonts[FontDropdown.value];
OriginalText.font = font;
OriginalText.text = s;
AdjustedText.font = font;
AdjustedText.text = ThaiFontAdjuster.Adjust(s);
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 43c4fc9f377cbb343a4b9b45e48c9e6d
timeCreated: 1454139706
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2f2f8582a221c064f8250e4ac00d4c49
timeCreated: 1454139597
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
Loading…
Cancel
Save