diff --git a/docs/assets/fonts/RaqqSura.woff2 b/docs/assets/fonts/RaqqSura.woff2 index 662476e..9df5879 100644 Binary files a/docs/assets/fonts/RaqqSura.woff2 and b/docs/assets/fonts/RaqqSura.woff2 differ diff --git a/fonts/RaqqSura.ttf b/fonts/RaqqSura.ttf index 5613ad4..2c9f9d3 100644 Binary files a/fonts/RaqqSura.ttf and b/fonts/RaqqSura.ttf differ diff --git a/sources/RaqqSura.glyphspackage/fontinfo.plist b/sources/RaqqSura.glyphspackage/fontinfo.plist index 76f1b37..b4b0bea 100644 --- a/sources/RaqqSura.glyphspackage/fontinfo.plist +++ b/sources/RaqqSura.glyphspackage/fontinfo.plist @@ -804,6 +804,10 @@ lookup before_beh { sub @ain by @ain [_c.ain.init.beh _c.ain.medi.beh]; sub @feh by @feh [_c.feh.init.beh _c.feh.medi.beh]; sub kashida-ar by kashida-ar _c.ain.init.beh; + sub alef-ar.fina by alef-ar.fina.kashida; + sub alef-ar.fina.lam by alef-ar.fina.lam.kashida; + #sub lam-ar.medi.round by lam-ar.medi.round.kashida; + #sub behDotless-ar.medi.round by behDotless-ar.medi.round.kashida; } before_beh; lookup before_dal { @@ -841,6 +845,14 @@ lookup before_yeh { sub @before_yeh by @before_yeh _c.ain.yeh; } before_yeh; +lookup rclt_connection_sura { + lookupflag IgnoreMarks; + sub [kashida-ar]' + [alef-ar.fina alef-ar.fina.lam + behDotless-ar.medi.round lam-ar.medi.round]' lookup before_beh + ; +} rclt_connection_sura; + lookup rclt_connection { lookupflag IgnoreMarks; @@ -852,6 +864,10 @@ lookup rclt_connection { by [kaf-ar.init.alt kaf-ar.medi.alt] ; + sub [kashida-ar]' + [alef-ar.fina behDotless-ar.medi.round lam-ar.medi.round]' lookup before_beh + ; + sub @before_beh' lookup before_beh [$[rightKerningGroup = \"beh\"] fehDotless-ar.medi fehDotless-ar.fina] ; @@ -971,6 +987,7 @@ tag = rlig; { code = "lookup rclt_yehbarree_baseline; #lookup rclt_connection; +lookup rclt_connection_sura; lookup rclt_fathatan; lookup rclt_kasratan; "; @@ -1282,6 +1299,7 @@ GSOffsetPosition = 1; GSOffsetProportional = 1; GSOffsetVertical = 10; }; +visible = 1; } ); instances = ( diff --git a/sources/RaqqSura.glyphspackage/glyphs/alef-ar.fina.kashida.glyph b/sources/RaqqSura.glyphspackage/glyphs/alef-ar.fina.kashida.glyph new file mode 100644 index 0000000..a4fddc6 --- /dev/null +++ b/sources/RaqqSura.glyphspackage/glyphs/alef-ar.fina.kashida.glyph @@ -0,0 +1,111 @@ +{ +glyphname = "alef-ar.fina.kashida"; +kernLeft = alef.fina; +layers = ( +{ +anchors = ( +{ +name = damma; +pos = (-47,61); +}, +{ +name = entry; +pos = (198,0); +}, +{ +name = fatha; +pos = (114,650); +}, +{ +name = kasra; +pos = (66,-56); +}, +{ +name = madda; +pos = (-97,635); +} +); +attr = { +colorPalette = 4; +}; +backgroundImage = { +alpha = 80; +angle = 1; +imagePath = "images/MS-ADD-01116-000-00003.jpg"; +locked = 1; +pos = (-4909,-2944); +scale = (5,5); +}; +layerId = m01; +shapes = ( +{ +closed = 1; +nodes = ( +(198,0,l), +(198,110,l), +(153,110,o), +(83,126,o), +(77,228,cs), +(72,317,o), +(62,618,o), +(50,779,cs), +(49,799,o), +(44,791,o), +(37,780,cs), +(15,744,o), +(-27,700,o), +(-54,683,c), +(-45,633,o), +(-40,623,o), +(-33,550,cs), +(-23,436,o), +(-17,298,o), +(-9,149,cs), +(-5,76,o), +(-9,0,o), +(178,0,cs) +); +} +); +width = 198; +}, +{ +associatedMasterId = m01; +attr = { +colorPalette = 1; +}; +layerId = "71CEAFC8-0E0A-4757-824F-4661413A707E"; +name = "Regular 9 Jan 24 at 19:02"; +shapes = ( +{ +closed = 1; +nodes = ( +(198,10,l), +(198,100,l), +(151,100,o), +(74,117,o), +(67,227,cs), +(62,315,o), +(52,605,o), +(41,768,c), +(19,735,o), +(-17,697,o), +(-43,678,c), +(-35,635,o), +(-30,622,o), +(-23,551,cs), +(-13,437,o), +(-7,298,o), +(1,150,cs), +(5,76,o), +(2,10,o), +(178,10,cs) +); +} +); +visible = 1; +width = 198; +} +); +metricRight = "=0"; +} diff --git a/sources/RaqqSura.glyphspackage/glyphs/alef-ar.fina.lam.kashida.glyph b/sources/RaqqSura.glyphspackage/glyphs/alef-ar.fina.lam.kashida.glyph new file mode 100644 index 0000000..4657724 --- /dev/null +++ b/sources/RaqqSura.glyphspackage/glyphs/alef-ar.fina.lam.kashida.glyph @@ -0,0 +1,100 @@ +{ +glyphname = "alef-ar.fina.lam.kashida"; +kernLeft = alef.fina; +layers = ( +{ +anchors = ( +{ +name = damma; +pos = (-76,61); +}, +{ +name = entry; +pos = (211,0); +}, +{ +name = fatha; +pos = (135,650); +}, +{ +name = kasra; +pos = (57,-56); +}, +{ +name = madda; +pos = (-86,635); +} +); +attr = { +colorPalette = 4; +}; +backgroundImage = { +alpha = 80; +angle = 1; +imagePath = "images/MS-ADD-01116-000-00003.jpg"; +locked = 1; +pos = (-4888,-2944); +scale = (5,5); +}; +layerId = m01; +shapes = ( +{ +closed = 1; +nodes = ( +(166,110,o), +(90,126,o), +(90,228,cs), +(90,781,ls), +(91,808,o), +(79,795,o), +(71,784,cs), +(50,755,o), +(20,714,o), +(-10,689,c), +(-10,179,ls), +(-10,106,o), +(-10,0,o), +(177,0,cs), +(211,0,l), +(211,110,l) +); +} +); +width = 211; +}, +{ +associatedMasterId = m01; +attr = { +colorPalette = 1; +}; +layerId = "71CEAFC8-0E0A-4757-824F-4661413A707E"; +name = "Regular 9 Jan 24 at 19:02"; +shapes = ( +{ +closed = 1; +nodes = ( +(164,100,o), +(80,118,o), +(80,228,cs), +(80,781,l), +(80,781,o), +(87,789,o), +(79,778,cs), +(59,750,o), +(30,710,o), +(0,684,c), +(0,179,ls), +(0,106,o), +(0,10,o), +(177,10,cs), +(211,10,l), +(211,100,l) +); +} +); +visible = 1; +width = 211; +} +); +metricRight = "=0"; +} diff --git a/sources/RaqqSura.glyphspackage/order.plist b/sources/RaqqSura.glyphspackage/order.plist index 11b8dd0..b477c5d 100644 --- a/sources/RaqqSura.glyphspackage/order.plist +++ b/sources/RaqqSura.glyphspackage/order.plist @@ -4,7 +4,9 @@ space, "alef-ar", "alef-ar.lam", "alef-ar.fina", +"alef-ar.fina.kashida", "alef-ar.fina.lam", +"alef-ar.fina.lam.kashida", "alef-ar.fina.short", "behDotless-ar", "behDotless-ar.fina", diff --git a/tests/shaping.json b/tests/shaping.json index 7de9fbd..ab4395b 100644 --- a/tests/shaping.json +++ b/tests/shaping.json @@ -4964,7 +4964,7 @@ "input": "كـا", "expectation": { "default": "alef-ar.fina.kashida=2+219|kashida-ar=1+100|kaf-ar.init=0+765", - "RaqqSura.ttf": "alef-ar.fina=2+90|kashida-ar=1+100|kaf-ar.init=0+765" + "RaqqSura.ttf": "alef-ar.fina.kashida=2+198|kashida-ar=1+100|kaf-ar.init=0+765" } }, { @@ -5601,7 +5601,7 @@ "input": "نـا", "expectation": { "default": "alef-ar.fina.kashida=2+219|kashida-ar=1+100|dotabove-ar=0@2,299+0|behDotless-ar.init=0+130", - "RaqqSura.ttf": "alef-ar.fina=2+90|kashida-ar=1+100|dotabove-ar=0@-20,297+0|behDotless-ar.init=0+100" + "RaqqSura.ttf": "alef-ar.fina.kashida=2+198|kashida-ar=1+100|dotabove-ar=0@-20,297+0|behDotless-ar.init=0+100" } }, { @@ -7025,7 +7025,7 @@ "input": "بكـا", "expectation": { "default": "alef-ar.fina.kashida=3+219|kashida-ar=2+100|kaf-ar.medi=1+758|dotbelow-ar=0@51,-46+0|behDotless-ar.init=0@-21,0+109", - "RaqqSura.ttf": "alef-ar.fina=3+90|kashida-ar=2+100|kaf-ar.medi=1+758|dotbelow-ar=0@72,-46+0|behDotless-ar.init=0+100" + "RaqqSura.ttf": "alef-ar.fina.kashida=3+198|kashida-ar=2+100|kaf-ar.medi=1+758|dotbelow-ar=0@72,-46+0|behDotless-ar.init=0+100" } }, { @@ -7263,7 +7263,7 @@ "input": "صــا", "expectation": { "default": "alef-ar.fina.kashida=3+219|kashida-ar=2+100|kashida-ar=1+100|sad-ar.init=0+765", - "RaqqSura.ttf": "alef-ar.fina=3+90|kashida-ar=2+100|kashida-ar=1+100|sad-ar.init=0+765" + "RaqqSura.ttf": "alef-ar.fina.kashida=3+198|kashida-ar=2+100|kashida-ar=1+100|sad-ar.init=0+765" } }, { @@ -7732,7 +7732,7 @@ "input": "نــا", "expectation": { "default": "alef-ar.fina.kashida=3+219|kashida-ar=2+100|kashida-ar=1+100|dotabove-ar=0@2,299+0|behDotless-ar.init=0+130", - "RaqqSura.ttf": "alef-ar.fina=3+90|kashida-ar=2+100|kashida-ar=1+100|dotabove-ar=0@-20,297+0|behDotless-ar.init=0+100" + "RaqqSura.ttf": "alef-ar.fina.kashida=3+198|kashida-ar=2+100|kashida-ar=1+100|dotabove-ar=0@-20,297+0|behDotless-ar.init=0+100" } }, {