From a25ba3ae4ce8b793a8e3c9d1c552a0073086b94a Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Fri, 24 Nov 2023 15:05:20 +0200 Subject: [PATCH 1/3] Add anchor to space and thinspace glyphs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit They are often used as bases for standalone marks, and it seems without anchors Chrome will badly position the marks on them (I think it might be splitting the text at the space glyph and partially shaping it). For example, the word فَٱدَّ ٰرَءٖۡتُمۡ has the small alef above mispositioned in Chrome with Noto Sans Arabic. FontBakery also complains that we are not attaching marks to the space, and this change should fix it as well. --- .../glyphs/space.glyph | 16 +++++ .../glyphs/thinspace.glyph | 16 +++++ .../glyphs/space.glyph | 8 +++ .../glyphs/thinspace.glyph | 8 +++ .../glyphs/space.glyph | 64 +++++++++++++++++++ .../glyphs/thinspace.glyph | 64 +++++++++++++++++++ 6 files changed, 176 insertions(+) diff --git a/sources/NotoKufiArabic.glyphspackage/glyphs/space.glyph b/sources/NotoKufiArabic.glyphspackage/glyphs/space.glyph index de7e00ce5..2e16d9bd0 100644 --- a/sources/NotoKufiArabic.glyphspackage/glyphs/space.glyph +++ b/sources/NotoKufiArabic.glyphspackage/glyphs/space.glyph @@ -4,6 +4,10 @@ layers = ( { anchors = ( { +name = bottom; +position = "{170, -78}"; +}, +{ name = stop; position = "{170, 424}"; }, @@ -22,6 +26,10 @@ width = 340; { anchors = ( { +name = bottom; +position = "{170, -78}"; +}, +{ name = stop; position = "{170, 424}"; }, @@ -40,6 +48,10 @@ width = 340; { anchors = ( { +name = bottom; +position = "{170, -78}"; +}, +{ name = stop; position = "{170, 424}"; }, @@ -58,6 +70,10 @@ width = 340; { anchors = ( { +name = bottom; +position = "{170, -78}"; +}, +{ name = stop; position = "{170, 424}"; }, diff --git a/sources/NotoKufiArabic.glyphspackage/glyphs/thinspace.glyph b/sources/NotoKufiArabic.glyphspackage/glyphs/thinspace.glyph index ca72fddf0..fd431b170 100644 --- a/sources/NotoKufiArabic.glyphspackage/glyphs/thinspace.glyph +++ b/sources/NotoKufiArabic.glyphspackage/glyphs/thinspace.glyph @@ -4,6 +4,10 @@ layers = ( { anchors = ( { +name = bottom; +position = "{85, -78}"; +}, +{ name = stop; position = "{85, 424}"; }, @@ -22,6 +26,10 @@ width = 170; { anchors = ( { +name = bottom; +position = "{85, -78}"; +}, +{ name = stop; position = "{85, 424}"; }, @@ -40,6 +48,10 @@ width = 170; { anchors = ( { +name = bottom; +position = "{85, -78}"; +}, +{ name = stop; position = "{85, 424}"; }, @@ -58,6 +70,10 @@ width = 170; { anchors = ( { +name = bottom; +position = "{85, -78}"; +}, +{ name = stop; position = "{85, 424}"; }, diff --git a/sources/NotoNaskhArabic.glyphspackage/glyphs/space.glyph b/sources/NotoNaskhArabic.glyphspackage/glyphs/space.glyph index f6f62b5a6..f0648af12 100644 --- a/sources/NotoNaskhArabic.glyphspackage/glyphs/space.glyph +++ b/sources/NotoNaskhArabic.glyphspackage/glyphs/space.glyph @@ -4,6 +4,10 @@ layers = ( { anchors = ( { +name = bottom; +pos = (111,-94); +}, +{ name = stop; pos = (111,424); }, @@ -22,6 +26,10 @@ width = 221; { anchors = ( { +name = bottom; +pos = (111,-94); +}, +{ name = stop; pos = (111,424); }, diff --git a/sources/NotoNaskhArabic.glyphspackage/glyphs/thinspace.glyph b/sources/NotoNaskhArabic.glyphspackage/glyphs/thinspace.glyph index 08b8ca500..7fdb79c39 100644 --- a/sources/NotoNaskhArabic.glyphspackage/glyphs/thinspace.glyph +++ b/sources/NotoNaskhArabic.glyphspackage/glyphs/thinspace.glyph @@ -4,6 +4,10 @@ layers = ( { anchors = ( { +name = bottom; +pos = (56,-94); +}, +{ name = stop; pos = (56,424); }, @@ -22,6 +26,10 @@ width = 111; { anchors = ( { +name = bottom; +pos = (56,-94); +}, +{ name = stop; pos = (56,424); }, diff --git a/sources/NotoSansArabic.glyphspackage/glyphs/space.glyph b/sources/NotoSansArabic.glyphspackage/glyphs/space.glyph index 62a416538..7e00bd59d 100644 --- a/sources/NotoSansArabic.glyphspackage/glyphs/space.glyph +++ b/sources/NotoSansArabic.glyphspackage/glyphs/space.glyph @@ -4,8 +4,16 @@ layers = ( { anchors = ( { +name = bottom; +position = "{130, -100}"; +}, +{ name = stop; position = "{130, 400}"; +}, +{ +name = top; +position = "{130, 400}"; } ); layerId = "9B455188-434F-489F-9A18-4C18DBE88840"; @@ -14,8 +22,16 @@ width = 260; { anchors = ( { +name = bottom; +position = "{130, -100}"; +}, +{ name = stop; position = "{130, 400}"; +}, +{ +name = top; +position = "{130, 400}"; } ); layerId = "A7E21968-E455-4749-BB19-379F5EDC3B9B"; @@ -24,8 +40,16 @@ width = 260; { anchors = ( { +name = bottom; +position = "{130, -100}"; +}, +{ name = stop; position = "{130, 400}"; +}, +{ +name = top; +position = "{130, 400}"; } ); layerId = "D3B47D5E-6A85-4361-9DF6-638C8B7E2782"; @@ -34,8 +58,16 @@ width = 260; { anchors = ( { +name = bottom; +position = "{130, -100}"; +}, +{ name = stop; position = "{130, 400}"; +}, +{ +name = top; +position = "{130, 400}"; } ); layerId = "08F1692B-9525-48D2-9816-1987B1C44D50"; @@ -44,8 +76,16 @@ width = 260; { anchors = ( { +name = bottom; +position = "{130, -100}"; +}, +{ name = stop; position = "{130, 400}"; +}, +{ +name = top; +position = "{130, 400}"; } ); guideLines = ( @@ -59,8 +99,16 @@ width = 260; { anchors = ( { +name = bottom; +position = "{130, -100}"; +}, +{ name = stop; position = "{130, 400}"; +}, +{ +name = top; +position = "{130, 400}"; } ); layerId = "6D0603BE-7277-4DA4-8C59-7934AF28E45B"; @@ -69,8 +117,16 @@ width = 260; { anchors = ( { +name = bottom; +position = "{130, -100}"; +}, +{ name = stop; position = "{130, 400}"; +}, +{ +name = top; +position = "{130, 400}"; } ); layerId = "E1555194-BAFD-4DCC-A026-E2F9BA1917F2"; @@ -79,8 +135,16 @@ width = 260; { anchors = ( { +name = bottom; +position = "{130, -100}"; +}, +{ name = stop; position = "{130, 400}"; +}, +{ +name = top; +position = "{130, 400}"; } ); layerId = "8594390A-478C-48BC-BAB2-0B8797A53DFB"; diff --git a/sources/NotoSansArabic.glyphspackage/glyphs/thinspace.glyph b/sources/NotoSansArabic.glyphspackage/glyphs/thinspace.glyph index e20438361..5aa17061f 100644 --- a/sources/NotoSansArabic.glyphspackage/glyphs/thinspace.glyph +++ b/sources/NotoSansArabic.glyphspackage/glyphs/thinspace.glyph @@ -4,8 +4,16 @@ layers = ( { anchors = ( { +name = bottom; +position = "{65, -100}"; +}, +{ name = stop; position = "{65, 400}"; +}, +{ +name = top; +position = "{65, 400}"; } ); layerId = "A2AC38AA-6CC4-4B2B-B5AB-64A49772F2D3"; @@ -14,8 +22,16 @@ width = 130; { anchors = ( { +name = bottom; +position = "{65, -100}"; +}, +{ name = stop; position = "{65, 400}"; +}, +{ +name = top; +position = "{65, 400}"; } ); layerId = "6D0603BE-7277-4DA4-8C59-7934AF28E45B"; @@ -24,8 +40,16 @@ width = 130; { anchors = ( { +name = bottom; +position = "{65, -100}"; +}, +{ name = stop; position = "{65, 400}"; +}, +{ +name = top; +position = "{65, 400}"; } ); layerId = "E1555194-BAFD-4DCC-A026-E2F9BA1917F2"; @@ -34,8 +58,16 @@ width = 130; { anchors = ( { +name = bottom; +position = "{65, -100}"; +}, +{ name = stop; position = "{65, 400}"; +}, +{ +name = top; +position = "{65, 400}"; } ); layerId = "8594390A-478C-48BC-BAB2-0B8797A53DFB"; @@ -44,8 +76,16 @@ width = 130; { anchors = ( { +name = bottom; +position = "{65, -100}"; +}, +{ name = stop; position = "{65, 400}"; +}, +{ +name = top; +position = "{65, 400}"; } ); layerId = "D3B47D5E-6A85-4361-9DF6-638C8B7E2782"; @@ -54,8 +94,16 @@ width = 130; { anchors = ( { +name = bottom; +position = "{65, -100}"; +}, +{ name = stop; position = "{65, 400}"; +}, +{ +name = top; +position = "{65, 400}"; } ); layerId = "9B455188-434F-489F-9A18-4C18DBE88840"; @@ -64,8 +112,16 @@ width = 130; { anchors = ( { +name = bottom; +position = "{65, -100}"; +}, +{ name = stop; position = "{65, 400}"; +}, +{ +name = top; +position = "{65, 400}"; } ); layerId = "08F1692B-9525-48D2-9816-1987B1C44D50"; @@ -74,8 +130,16 @@ width = 130; { anchors = ( { +name = bottom; +position = "{65, -100}"; +}, +{ name = stop; position = "{65, 400}"; +}, +{ +name = top; +position = "{65, 400}"; } ); layerId = "A7E21968-E455-4749-BB19-379F5EDC3B9B"; From 97f49b3b6674aa7f2cb95c6f6178c7208594282c Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Fri, 24 Nov 2023 15:21:16 +0200 Subject: [PATCH 2/3] Naskh: Remove unused anchor No base glyph has it. --- .../glyphs/largerounddotabove-ar.glyph | 8 -------- 1 file changed, 8 deletions(-) diff --git a/sources/NotoNaskhArabic.glyphspackage/glyphs/largerounddotabove-ar.glyph b/sources/NotoNaskhArabic.glyphspackage/glyphs/largerounddotabove-ar.glyph index 881fdf7aa..f048992a5 100644 --- a/sources/NotoNaskhArabic.glyphspackage/glyphs/largerounddotabove-ar.glyph +++ b/sources/NotoNaskhArabic.glyphspackage/glyphs/largerounddotabove-ar.glyph @@ -72,10 +72,6 @@ anchors = ( { name = _top.far; pos = (114,606); -}, -{ -name = _top.tashkil; -pos = (114,706); } ); associatedMasterId = master01; @@ -107,10 +103,6 @@ anchors = ( { name = _top.far; pos = (126,606); -}, -{ -name = _top.tashkil; -pos = (126,706); } ); associatedMasterId = master01; From 1c0c2d944c96e33f8f14ccc205cbfee0ef1afc35 Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Fri, 24 Nov 2023 15:32:50 +0200 Subject: [PATCH 3/3] Sans: Fix some mark anchors These anchors should be positioned like marks not dots (this distinction is made e.g. in fehDotless-ar where dots are place below the head and regular marks are centered). --- .../glyphs/circlebelow-ar.glyph | 16 ++++++++-------- .../glyphs/dotcirclebelow-ar.glyph | 16 ++++++++-------- .../glyphs/largerounddotbelow-ar.glyph | 16 ++++++++-------- .../glyphs/rounddotbelow-ar.glyph | 16 ++++++++-------- .../glyphs/toneonedotbelow-ar.glyph | 16 ++++++++-------- .../glyphs/tonetwodotsbelow-ar.glyph | 16 ++++++++-------- 6 files changed, 48 insertions(+), 48 deletions(-) diff --git a/sources/NotoSansArabic.glyphspackage/glyphs/circlebelow-ar.glyph b/sources/NotoSansArabic.glyphspackage/glyphs/circlebelow-ar.glyph index 711e852db..c2d4aea60 100644 --- a/sources/NotoSansArabic.glyphspackage/glyphs/circlebelow-ar.glyph +++ b/sources/NotoSansArabic.glyphspackage/glyphs/circlebelow-ar.glyph @@ -8,7 +8,7 @@ name = _bottom; position = "{62, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{62, 0}"; }, { @@ -62,7 +62,7 @@ name = _bottom; position = "{118, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{118, 0}"; }, { @@ -116,7 +116,7 @@ name = _bottom; position = "{144, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{144, 0}"; }, { @@ -170,7 +170,7 @@ name = _bottom; position = "{165, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{165, 0}"; }, { @@ -224,7 +224,7 @@ name = _bottom; position = "{62, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{62, 0}"; }, { @@ -278,7 +278,7 @@ name = _bottom; position = "{109, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{109, 0}"; }, { @@ -332,7 +332,7 @@ name = _bottom; position = "{134, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{134, 0}"; }, { @@ -386,7 +386,7 @@ name = _bottom; position = "{152, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{152, 0}"; }, { diff --git a/sources/NotoSansArabic.glyphspackage/glyphs/dotcirclebelow-ar.glyph b/sources/NotoSansArabic.glyphspackage/glyphs/dotcirclebelow-ar.glyph index 37709c872..2785917ae 100644 --- a/sources/NotoSansArabic.glyphspackage/glyphs/dotcirclebelow-ar.glyph +++ b/sources/NotoSansArabic.glyphspackage/glyphs/dotcirclebelow-ar.glyph @@ -8,7 +8,7 @@ name = _bottom; position = "{62, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{62, 0}"; }, { @@ -37,7 +37,7 @@ name = _bottom; position = "{118, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{118, 0}"; }, { @@ -66,7 +66,7 @@ name = _bottom; position = "{145, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{145, 0}"; }, { @@ -95,7 +95,7 @@ name = _bottom; position = "{165, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{165, 0}"; }, { @@ -124,7 +124,7 @@ name = _bottom; position = "{62, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{62, 0}"; }, { @@ -153,7 +153,7 @@ name = _bottom; position = "{109, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{109, 0}"; }, { @@ -182,7 +182,7 @@ name = _bottom; position = "{134, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{134, 0}"; }, { @@ -211,7 +211,7 @@ name = _bottom; position = "{152, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{152, 0}"; }, { diff --git a/sources/NotoSansArabic.glyphspackage/glyphs/largerounddotbelow-ar.glyph b/sources/NotoSansArabic.glyphspackage/glyphs/largerounddotbelow-ar.glyph index e1ad87341..952f3462e 100644 --- a/sources/NotoSansArabic.glyphspackage/glyphs/largerounddotbelow-ar.glyph +++ b/sources/NotoSansArabic.glyphspackage/glyphs/largerounddotbelow-ar.glyph @@ -8,7 +8,7 @@ name = _bottom; position = "{55, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{55, 0}"; }, { @@ -33,7 +33,7 @@ name = _bottom; position = "{108, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{108, 0}"; }, { @@ -58,7 +58,7 @@ name = _bottom; position = "{132, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{132, 0}"; }, { @@ -83,7 +83,7 @@ name = _bottom; position = "{150, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{150, 0}"; }, { @@ -108,7 +108,7 @@ name = _bottom; position = "{55, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{55, 0}"; }, { @@ -133,7 +133,7 @@ name = _bottom; position = "{99, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{99, 0}"; }, { @@ -158,7 +158,7 @@ name = _bottom; position = "{122, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{122, 0}"; }, { @@ -183,7 +183,7 @@ name = _bottom; position = "{137, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{137, 0}"; }, { diff --git a/sources/NotoSansArabic.glyphspackage/glyphs/rounddotbelow-ar.glyph b/sources/NotoSansArabic.glyphspackage/glyphs/rounddotbelow-ar.glyph index 68493ca68..672a03234 100644 --- a/sources/NotoSansArabic.glyphspackage/glyphs/rounddotbelow-ar.glyph +++ b/sources/NotoSansArabic.glyphspackage/glyphs/rounddotbelow-ar.glyph @@ -8,7 +8,7 @@ name = _bottom; position = "{76, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{76, 0}"; }, { @@ -45,7 +45,7 @@ name = _bottom; position = "{100, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{100, 0}"; }, { @@ -82,7 +82,7 @@ name = _bottom; position = "{47, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{47, 0}"; }, { @@ -119,7 +119,7 @@ name = _bottom; position = "{91, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{91, 0}"; }, { @@ -156,7 +156,7 @@ name = _bottom; position = "{47, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{47, 0}"; }, { @@ -193,7 +193,7 @@ name = _bottom; position = "{83, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{83, 0}"; }, { @@ -230,7 +230,7 @@ name = _bottom; position = "{101, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{101, 0}"; }, { @@ -267,7 +267,7 @@ name = _bottom; position = "{109, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{109, 0}"; }, { diff --git a/sources/NotoSansArabic.glyphspackage/glyphs/toneonedotbelow-ar.glyph b/sources/NotoSansArabic.glyphspackage/glyphs/toneonedotbelow-ar.glyph index 0979317b4..2f9500aa2 100644 --- a/sources/NotoSansArabic.glyphspackage/glyphs/toneonedotbelow-ar.glyph +++ b/sources/NotoSansArabic.glyphspackage/glyphs/toneonedotbelow-ar.glyph @@ -8,7 +8,7 @@ name = _bottom; position = "{65, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{65, 0}"; }, { @@ -45,7 +45,7 @@ name = _bottom; position = "{68, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{68, 0}"; }, { @@ -82,7 +82,7 @@ name = _bottom; position = "{48, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{48, 0}"; }, { @@ -119,7 +119,7 @@ name = _bottom; position = "{68, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{68, 0}"; }, { @@ -156,7 +156,7 @@ name = _bottom; position = "{48, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{48, 0}"; }, { @@ -193,7 +193,7 @@ name = _bottom; position = "{61, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{61, 0}"; }, { @@ -230,7 +230,7 @@ name = _bottom; position = "{76, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{76, 0}"; }, { @@ -267,7 +267,7 @@ name = _bottom; position = "{74, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{74, 0}"; }, { diff --git a/sources/NotoSansArabic.glyphspackage/glyphs/tonetwodotsbelow-ar.glyph b/sources/NotoSansArabic.glyphspackage/glyphs/tonetwodotsbelow-ar.glyph index d74838aa7..102b51f93 100644 --- a/sources/NotoSansArabic.glyphspackage/glyphs/tonetwodotsbelow-ar.glyph +++ b/sources/NotoSansArabic.glyphspackage/glyphs/tonetwodotsbelow-ar.glyph @@ -8,7 +8,7 @@ name = _bottom; position = "{117, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{117, 0}"; }, { @@ -67,7 +67,7 @@ name = _bottom; position = "{139, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{139, 0}"; }, { @@ -121,7 +121,7 @@ name = _bottom; position = "{93, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{93, 0}"; }, { @@ -175,7 +175,7 @@ name = _bottom; position = "{132, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{132, 0}"; }, { @@ -229,7 +229,7 @@ name = _bottom; position = "{93, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{93, 0}"; }, { @@ -288,7 +288,7 @@ name = _bottom; position = "{107, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{107, 0}"; }, { @@ -347,7 +347,7 @@ name = _bottom; position = "{137, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{137, 0}"; }, { @@ -406,7 +406,7 @@ name = _bottom; position = "{137, 0}"; }, { -name = _bottom.dot; +name = _bottom.mark; position = "{137, 0}"; }, {