On Sun, Apr 05, 2009 at 11:16:55AM +0200, Hans Hagen wrote:
> Khaled Hosny wrote:
>> Currently 'font-ota.lua' hard codes the Arabic shaping properties,and it
>> doesn't seem to be complete (e.g. the ڤ as in أڤاست is not joined), I
>> think such information belong to 'char-def.lua' and should be derived
>> from UCD, which provide 'ArabicShaping.txt[1]', covering Arabic, Syriac
>> and N'Ko scripts which all need the same shaping as Arabic.
>
> indeed this info will be moved to char def at some point (same for some
> cjk properties) but for the moment this is easier to hack; if you have
> patches, just let us know (remider for idris: you also had some, these
> symbols showing up in black in tre tracer ..)
OK, the attached patch should added all Arabic entries from
ArabicShaping.txt, I tested some Arabic, Persian and Urdu samples and
all seem to be OK. This also fixes a small bug, 0629 (TEH MARBUTA) were
marked as dual joining while is is right joining only.
Regards,
Khaled
--
Khaled Hosny
Arabic localiser and member of Arabeyes.org team
Free font developer
--- font-ota.lua.old 2009-04-05 16:37:45.0 +0200
+++ font-ota.lua 2009-04-05 16:41:07.0 +0200
@@ -111,23 +111,65 @@
local zwj = 0x200D
local isol = {
- [0x0621] = true, [zwnj] = true,
+[0x0600] = true, [0x0601] = true, [0x0602] = true, [0x0603] = true,
+[0x0608] = true, [0x060B] = true, [0x0621] = true, [0x0674] = true,
+[0x06DD] = true, [zwnj] = true,
}
local isol_fina = {
-[0x0622] = true, [0x0623] = true, [0x0624] = true, [0x0625] = true, [0x0627] = true, [0x062F] = true,
-[0x0630] = true, [0x0631] = true, [0x0632] = true,
-[0x0648] = true, [0x0671] = true, [0x0698] = true,
-[0xFEF5] = true, [0xFEF7] = true, [0xFEF9] = true, [0xFEFB] = true,
+[0x0622] = true, [0x0623] = true, [0x0624] = true, [0x0625] = true,
+[0x0627] = true, [0x0629] = true, [0x062F] = true, [0x0630] = true,
+[0x0631] = true, [0x0632] = true, [0x0648] = true, [0x0671] = true,
+[0x0672] = true, [0x0673] = true, [0x0675] = true, [0x0676] = true,
+[0x0677] = true, [0x0688] = true, [0x0689] = true, [0x068A] = true,
+[0x068B] = true, [0x068C] = true, [0x068D] = true, [0x068E] = true,
+[0x068F] = true, [0x0690] = true, [0x0691] = true, [0x0692] = true,
+[0x0693] = true, [0x0694] = true, [0x0695] = true, [0x0696] = true,
+[0x0697] = true, [0x0698] = true, [0x0699] = true, [0x06C0] = true,
+[0x06C3] = true, [0x06C4] = true, [0x06C5] = true, [0x06C6] = true,
+[0x06C7] = true, [0x06C8] = true, [0x06C9] = true, [0x06CA] = true,
+[0x06CB] = true, [0x06CD] = true, [0x06CF] = true, [0x06D2] = true,
+[0x06D3] = true, [0x06D5] = true, [0x06EE] = true, [0x06EF] = true,
+[0x0759] = true, [0x075A] = true, [0x075B] = true, [0x076B] = true,
+[0x076C] = true, [0x0771] = true, [0x0773] = true, [0x0774] = true,
+[0x0778] = true, [0x0779] = true,
}
local isol_fina_medi_init = {
-[0x0626] = true, [0x0628] = true, [0x0629] = true, [0x062A] = true, [0x062B] = true, [0x062C] = true, [0x062D] = true, [0x062E] = true,
-[0x0633] = true, [0x0634] = true, [0x0635] = true, [0x0636] = true, [0x0637] = true, [0x0638] = true, [0x0639] = true, [0x063A] = true,
-[0x0640] = true, -- tadwil
-[0x0641] = true, [0x0642] = true, [0x0643] = true, [0x0644] = true, [0x0645] = true, [0x0646] = true, [0x0647] = true, [0x0649] = true, [0x064A] = true,
-[0x067E] = true, [0x0686] = true, [0x06AF] = true, [0x06A9] = true, [0x06CC] = true,
-[zwj] = true,
+[0x0626] = true, [0x0628] = true, [0x062A] = true, [0x062B] = true,
+[0x062C] = true, [0x062D] = true, [0x062E] = true, [0x0633] = true,
+[0x0634] = true, [0x0635] = true, [0x0636] = true, [0x0637] = true,
+[0x0638] = true, [0x0639] = true, [0x063A] = true, [0x063B] = true,
+[0x063C] = true, [0x063D] = true, [0x063E] = true, [0x063F] = true,
+[0x0640] = true, [0x0641] = true, [0x0642] = true, [0x0643] = true,
+[0x0644] = true, [0x0645] = true, [0x0646] = true, [0x0647] = true,
+[0x0649] = true, [0x064A] = true, [0x066E] = true, [0x066F] = true,
+[0x0678] = true, [0x0679] = true, [0x067A] = true, [0x067B] = true,
+[0x067C] = true, [0x067D] = true, [0x067E] = true, [0x067F] = true,
+[0x0680] = true, [0x0681] = true, [0x0682] = true, [0x0683] = true,
+[0x0684] = true, [0x0685] = true, [0x0686] = true, [0x0687] = true,
+[0x069A] = true, [0x069B] = true, [0x069C] = true, [0x069D] = true,
+[0x069E] = true, [0x069F] = true, [0x06A0] = true, [0x06A1] = true,
+[0x06A2] = true, [0x06A3] = true, [0x06A4] = true, [0x06A5] = true,
+[0x06A6] = true, [0x06A7] = true, [0x06A8] = true, [0x06A9] = true,
+[0x06AA] = true, [0x06AB] = true, [0x06AC] = true, [0x06AD] = true,
+[0x06AE] = true, [0x06AF] = true, [0x06B0] = true, [0x06B1] = true,
+[0x06B2] = true, [0x06B3] = true, [0x06B4] = true, [0x06B5] = true,
+[0x06B6] = true, [0x06B7] = true, [0x06B8] = true, [0x06B9]