diff --git a/changes/32.0.2.md b/changes/32.0.2.md new file mode 100644 index 000000000..425c37c4d --- /dev/null +++ b/changes/32.0.2.md @@ -0,0 +1,2 @@ +* Make serif of Armenian Lower Yi (`U+0575`) consistent with Armenian Lower Liwn (`U+056C`). +* Make hook of Armenian Lower Co (`U+0581`) consistent with Armenian Lower Yi (`U+0575`). diff --git a/packages/font-glyphs/src/letter/armenian/aliases.ptl b/packages/font-glyphs/src/letter/armenian/aliases.ptl index 7481a560d..6cb685261 100644 --- a/packages/font-glyphs/src/letter/armenian/aliases.ptl +++ b/packages/font-glyphs/src/letter/armenian/aliases.ptl @@ -10,7 +10,7 @@ glyph-block Letter-Armenian-Aliases : begin alias 'armn/Tiun' 0x54F 'S.serifless' alias 'armn/Piur' 0x553 'grek/Phi' alias 'armn/Oh' 0x555 'O' - alias 'armn/yi' 0x575 : if SLAB 'dotlessj.flatHookSerifed' 'dotlessj.flatHookSerifless' - alias 'armn/co' 0x581 'g.singleStorey' + alias 'armn/yi' 0x575 : if SLAB 'dotlessj.flatHookShortSerifed' 'dotlessj.flatHookSerifless' + alias 'armn/co' 0x581 : if (SLAB && [not para.isItalic]) 'g.singleStoreyFlatHookSerifed' 'g.singleStoreyFlatHookSerifless' alias 'armn/oh' 0x585 'o' - alias 'armn/yiBar' 0x588 : if SLAB 'dotlessjBar.flatHookSerifed' 'dotlessjBar.flatHookSerifless' + alias 'armn/yiBar' 0x588 : if SLAB 'dotlessjBar.flatHookShortSerifed' 'dotlessjBar.flatHookSerifless' diff --git a/packages/font-glyphs/src/letter/armenian/ca.ptl b/packages/font-glyphs/src/letter/armenian/ca.ptl index 5f6aef768..ac8c9fbf3 100644 --- a/packages/font-glyphs/src/letter/armenian/ca.ptl +++ b/packages/font-glyphs/src/letter/armenian/ca.ptl @@ -41,8 +41,8 @@ glyph-block Letter-Armenian-Ca : begin local x1 : mix df.leftSB df.rightSB 0.45 local x2 : mix df.leftSB df.rightSB 0.3 - local xOffset : 0.5 * [HSwToV df.mvs] - local y2 : mix Ascender XH 0.5 + local xOffset : HSwToV : 0.5 * df.mvs + local y2 : mix XH Ascender 0.5 include : dispiro widths.rhs df.mvs flat (x1 + xOffset) Ascender [heading Downward] @@ -55,11 +55,11 @@ glyph-block Letter-Armenian-Ca : begin widths.rhs df.mvs flat (x3 + xOffset) Ascender curl (x4 + xOffset) XH - straight.down.end (df.rightSB - OX) (XH - SmallArchDepthB) + flat (df.rightSB - OX) (XH - SmallArchDepthB) curl (df.rightSB - OX) (0 + SmallArchDepthA) arch.rhs 0 (sw -- df.mvs) flat (df.leftSB + OX) (0 + SmallArchDepthB) - curl (df.leftSB + OX) (XH - SmallArchDepthA) + curl (df.leftSB + OX) (highBarPos - SmallArchDepthA) arcvh - flat df.middle XH - curl df.rightSB XH + flat df.middle highBarPos + curl (df.rightSB + jut - [HSwToV : 0.5 * df.mvs]) highBarPos diff --git a/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl b/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl index d4c12c1b9..2b9b7e6a7 100644 --- a/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl +++ b/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl @@ -52,8 +52,9 @@ glyph-block Letter-Armenian-Eh-Liun-Hiun : begin local df : include : DivFrame : if SLAB para.diversityI para.diversityII include : df.markSet.p local xMiddle : df.middle - [IBalance2 df] + local longJut : if (df.div < 1) (jut * [if SLAB 1.5 1]) LongJut include : VBar.m xMiddle Descender XH df.mvs - include : HBar.b xMiddle (xMiddle + LongJut * df.div) Descender df.mvs + include : HBar.b xMiddle (xMiddle + longJut) Descender df.mvs if SLAB : include : HSerif.lt xMiddle XH Jut df.mvs do "Hiun" diff --git a/packages/font-glyphs/src/letter/armenian/lower-dza-cheh.ptl b/packages/font-glyphs/src/letter/armenian/lower-dza-cheh.ptl index 76cd01d3d..9081416a8 100644 --- a/packages/font-glyphs/src/letter/armenian/lower-dza-cheh.ptl +++ b/packages/font-glyphs/src/letter/armenian/lower-dza-cheh.ptl @@ -21,10 +21,10 @@ glyph-block Letter-Armenian-Lower-Dza-Cheh : begin include : df.markSet.b local x1 : mix df.leftSB df.rightSB 0.25 local x2 : mix df.leftSB df.rightSB 0.75 - local y2 : Math.min [mix Ascender XH 0.5] (XH + 0.5 * SmallArchDepthA) + local y2 : Math.min (XH + 0.5 * SmallArchDepthA) : mix XH Ascender 0.5 include : dispiro widths.center df.mvs - straight.down.start x1 Ascender [heading Downward] + straight.down.start x1 Ascender arcvh flat df.middle y2 curl x2 y2 [heading Rightward] diff --git a/packages/font-glyphs/src/letter/latin/lower-g.ptl b/packages/font-glyphs/src/letter/latin/lower-g.ptl index e0d003fa9..f2a8361dd 100644 --- a/packages/font-glyphs/src/letter/latin/lower-g.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-g.ptl @@ -53,7 +53,7 @@ glyph-block Letter-Latin-Lower-G : begin derive-composites "gBar.doubleStorey" null "g.doubleStorey" [OverlayW obwDoubleStorey] - create-glyph 'g.openDoubleStorey' : glyph-proc + create-glyph 'g.doubleStoreyOpen' : glyph-proc include : MarkSet.p local obot : XH * DesignParameters.gBarPos - O - Stroke * 0.4 include : OShape XH obot SB (RightSB - 0.3 * SB) @@ -81,10 +81,10 @@ glyph-block Letter-Latin-Lower-G : begin set-base-anchor 'overlay' Middle [mix (Descender + O) groundy 0.5] set-base-anchor 'strike' Middle (XH / 2) - derive-composites "gBar.openDoubleStorey" null "g.openDoubleStorey" [OverlayW obwDoubleStorey] + derive-composites "gBar.doubleStoreyOpen" null "g.doubleStoreyOpen" [OverlayW obwDoubleStorey] define SingleStorey : namespace - export : define [RoundHookT sink df yTop offset sw] : sink + export : define [BentHookT sink df yTop offset sw] : sink widths.rhs sw [if (sink == spiro-outline) corner flat] (df.rightSB - offset) yTop [heading Downward] curl (df.rightSB - offset) (Descender + SmallArchDepthA) @@ -92,7 +92,7 @@ glyph-block Letter-Latin-Lower-G : begin g4 (df.leftSB + offset) (Descender + SHook) if (sink == spiro-outline) {[corner df.leftSB XH]} {} - export : define [RoundHook df y0] : RoundHookT dispiro df y0 0 df.mvs + export : define [BentHook df y0] : BentHookT dispiro df y0 0 df.mvs export : define [FlatHook df y0] : begin local hd : FlatHookDepth df (9 / 8) local xTerminal : Math.min (df.rightSB - hd.x - TINY) : mix df.leftSB df.rightSB (1 / 5) @@ -126,10 +126,6 @@ glyph-block Letter-Latin-Lower-G : begin include : SeriflessBody df top include : tagged 'serifRT' : HSerif.rt df.rightSB top SideJut - export : define [AutoSerifedBody df top] : glyph-proc - include : SeriflessBody df top - if (SLAB && [not para.isItalic]) : include : tagged 'serifRT' : HSerif.rt df.rightSB top SideJut - export : define [EarlessCornerBody df top] : glyph-proc include : OBarLeft.toothless top -- top @@ -151,10 +147,9 @@ glyph-block Letter-Latin-Lower-G : begin define SingleStoreyConfig : SuffixCfg.weave object # hook - singleStorey SingleStorey.RoundHook + singleStorey SingleStorey.BentHook singleStoreyFlatHook SingleStorey.FlatHook object # ear/serif - "" { SingleStorey.AutoSerifedBody 0 } serifless { SingleStorey.SeriflessBody 0 } serifed { SingleStorey.SerifedBody 0 } earlessCorner { SingleStorey.EarlessCornerBody DToothlessRise } @@ -231,8 +226,8 @@ glyph-block Letter-Latin-Lower-G : begin left -- SB right -- RightSB - BBD sw -- BBS - include : SingleStorey.RoundHookT dispiro [DivFrame 1] XH 0 BBS + include : SingleStorey.BentHookT dispiro [DivFrame 1] XH 0 BBS include : HBar.t (RightSB - BBD) RightSB XH BBS include : intersection VBar.r (RightSB - BBD) Descender XH BBS - SingleStorey.RoundHookT spiro-outline [DivFrame 1] XH 1 BBS + SingleStorey.BentHookT spiro-outline [DivFrame 1] XH 1 BBS diff --git a/packages/font-glyphs/src/letter/latin/lower-j.ptl b/packages/font-glyphs/src/letter/latin/lower-j.ptl index 57ca1b4bc..e8b030773 100644 --- a/packages/font-glyphs/src/letter/latin/lower-j.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-j.ptl @@ -100,18 +100,18 @@ glyph-block Letter-Latin-Lower-J : begin export : define FlatHookSerifed para.diversityI define JConfig : object - 'bentHookSerifless' { "BentHook" Serifs.None XMiddle.BentHook Marks.Serifless Div.BentHook } - 'bentHookSerifed' { "BentHook" Serifs.Long XMiddle.BentHook Marks.Serifed Div.BentHook } - 'bentHookShortSerifed' { "BentHook" Serifs.Short XMiddle.BentHook Marks.Serifed Div.BentHook } - 'straightSerifless' { "Straight" Serifs.None XMiddle.StraightSerifless Marks.Serifless Div.StraightSerifless } - 'straightSerifed' { "Straight" Serifs.Long XMiddle.StraightSerifed Marks.Serifed Div.StraightSerifed } - 'straightShortSerifed' { "Straight" Serifs.Short XMiddle.StraightSerifed Marks.Serifed Div.StraightSerifed } - 'flatHookSerifless' { "FlatHook" Serifs.None XMiddle.FlatHookSerifless Marks.Serifless Div.FlatHookSerifless } - 'flatHookSerifed' { "FlatHook" Serifs.Long XMiddle.FlatHookSerifed Marks.Serifed Div.FlatHookSerifed } - 'flatHookShortSerifed' { "FlatHook" Serifs.Short XMiddle.FlatHookSerifed Marks.Serifed Div.FlatHookSerifed } - 'diagonalTailedSerifless' { "DiagonalTailed" Serifs.None XMiddle.FlatHookSerifless Marks.Serifless Div.FlatHookSerifless } - 'diagonalTailedSerifed' { "DiagonalTailed" Serifs.Long XMiddle.FlatHookSerifed Marks.Serifed Div.FlatHookSerifed } - 'diagonalTailedShortSerifed' { "DiagonalTailed" Serifs.Short XMiddle.FlatHookSerifed Marks.Serifed Div.FlatHookSerifed } + 'bentHookSerifless' { "BentHook" Serifs.None XMiddle.BentHook Marks.Serifless Div.BentHook } + 'bentHookSerifed' { "BentHook" Serifs.Long XMiddle.BentHook Marks.Serifed Div.BentHook } + 'bentHookShortSerifed' { "BentHook" Serifs.Short XMiddle.BentHook Marks.Serifed Div.BentHook } + 'straightSerifless' { "Straight" Serifs.None XMiddle.StraightSerifless Marks.Serifless Div.StraightSerifless } + 'straightSerifed' { "Straight" Serifs.Long XMiddle.StraightSerifed Marks.Serifed Div.StraightSerifed } + 'straightShortSerifed' { "Straight" Serifs.Short XMiddle.StraightSerifed Marks.Serifed Div.StraightSerifed } + 'flatHookSerifless' { "FlatHook" Serifs.None XMiddle.FlatHookSerifless Marks.Serifless Div.FlatHookSerifless } + 'flatHookSerifed' { "FlatHook" Serifs.Long XMiddle.FlatHookSerifed Marks.Serifed Div.FlatHookSerifed } + 'flatHookShortSerifed' { "FlatHook" Serifs.Short XMiddle.FlatHookSerifed Marks.Serifed Div.FlatHookSerifed } + 'diagonalTailedSerifless' { "DiagonalTailed" Serifs.None XMiddle.FlatHookSerifless Marks.Serifless Div.FlatHookSerifless } + 'diagonalTailedSerifed' { "DiagonalTailed" Serifs.Long XMiddle.FlatHookSerifed Marks.Serifed Div.FlatHookSerifed } + 'diagonalTailedShortSerifed' { "DiagonalTailed" Serifs.Short XMiddle.FlatHookSerifed Marks.Serifed Div.FlatHookSerifed } foreach { suffix { shapeId Serif xMiddleT Marks div } } [Object.entries JConfig] : do local df : DivFrame div @@ -135,8 +135,8 @@ glyph-block Letter-Latin-Lower-J : begin select-variant 'dotlessj' 0x237 link-reduced-variant 'dotlessj/sansSerif' 'dotlessj' MathSansSerif - CreateAccentedComposition 'j' 'j' 'dotlessj' 'tittleAbove' - CreateAccentedComposition 'j/sansSerif' null 'dotlessj/sansSerif' 'tittleAbove' + CreateAccentedComposition 'j' 'j' 'dotlessj' 'tittleAbove' + CreateAccentedComposition 'j/sansSerif' null 'dotlessj/sansSerif' 'tittleAbove' link-reduced-variant 'j/sansSerif' 'j' MathSansSerif select-variant 'dotlessjBar' 0x25F (follow -- 'dotlessj') diff --git a/packages/font-glyphs/src/marks/above.ptl b/packages/font-glyphs/src/marks/above.ptl index c96253fd8..5a37bc5ec 100644 --- a/packages/font-glyphs/src/marks/above.ptl +++ b/packages/font-glyphs/src/marks/above.ptl @@ -1390,5 +1390,5 @@ glyph-block Mark-Above : begin local leftEnd : markMiddle - markExtend * 1.5 local rightEnd : markMiddle + markExtend * 1.5 - include : VBar.m leftEnd aboveMarkBot aboveMarkTop (markFine * 2) + include : VBar.l leftEnd aboveMarkBot aboveMarkTop (markFine * 2) include : HBar.b leftEnd rightEnd aboveMarkBot (markFine * 2) diff --git a/params/variants.toml b/params/variants.toml index 58abc3435..1d6802a4e 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -2763,19 +2763,6 @@ descriptionLeader = "`g`" next = "openness" rank = 1 descriptionAffix = "double-storey shape" -selectorAffix.g = "" -selectorAffix."g/sansSerif" = "" -selectorAffix."g/hookTopBase" = "" -selectorAffix."gScript" = "" -selectorAffix."g/single/autoSerifed/slab" = "" -selectorAffix."g/single/autoSerifed/sans" = "" - -[prime.g.variants-buildup.stages.openness."*"] -next = "END" - -[prime.g.variants-buildup.stages.openness.closed] -rank = 1 -keyAffix = "" selectorAffix.g = "doubleStorey" selectorAffix."g/sansSerif" = "doubleStorey" selectorAffix."g/hookTopBase" = "singleStoreySerifless" @@ -2783,15 +2770,28 @@ selectorAffix."gScript" = "singleStoreyScriptCut" selectorAffix."g/single/autoSerifed/slab" = "singleStoreySerifed" selectorAffix."g/single/autoSerifed/sans" = "singleStoreySerifless" +[prime.g.variants-buildup.stages.openness."*"] +next = "END" + +[prime.g.variants-buildup.stages.openness.closed] +rank = 1 +keyAffix = "" +selectorAffix.g = "" +selectorAffix."g/sansSerif" = "" +selectorAffix."g/hookTopBase" = "" +selectorAffix."gScript" = "" +selectorAffix."g/single/autoSerifed/slab" = "" +selectorAffix."g/single/autoSerifed/sans" = "" + [prime.g.variants-buildup.stages.openness.open] rank = 1 descriptionAffix = "open contour" -selectorAffix.g = "openDoubleStorey" -selectorAffix."g/sansSerif" = "openDoubleStorey" -selectorAffix."g/hookTopBase" = "singleStoreySerifless" -selectorAffix."gScript" = "singleStoreyScriptCut" -selectorAffix."g/single/autoSerifed/slab" = "singleStoreySerifed" -selectorAffix."g/single/autoSerifed/sans" = "singleStoreySerifless" +selectorAffix.g = "open" +selectorAffix."g/sansSerif" = "open" +selectorAffix."g/hookTopBase" = "" +selectorAffix."gScript" = "" +selectorAffix."g/single/autoSerifed/slab" = "" +selectorAffix."g/single/autoSerifed/sans" = "" [prime.g.variants-buildup.stages.storey.single-storey] next = "hook" @@ -2807,7 +2807,7 @@ selectorAffix."g/single/autoSerifed/sans" = "singleStorey" [prime.g.variants-buildup.stages.hook."*"] next = "ear" -[prime.g.variants-buildup.stages.hook.standard] +[prime.g.variants-buildup.stages.hook.bent-hook] rank = 1 keyAffix = "" selectorAffix.g = "" diff --git a/tools/generate-samples/src/templates/languages.mjs b/tools/generate-samples/src/templates/languages.mjs index 25a4fa8ce..fd50956f3 100644 --- a/tools/generate-samples/src/templates/languages.mjs +++ b/tools/generate-samples/src/templates/languages.mjs @@ -4,6 +4,7 @@ import themes from "../themes/index.mjs"; const languages = [ { lang: 'English', sample: 'Shaw, those twelve beige hooks are joined if I patch a young, gooey mouth.' }, { lang: 'IPA', sample: '[liə̯bə̆ ɡʷɯ̹ʔ̚ daŋ˕ sŋə̆r̥ra] [ʔɹie˦ na˦ ɡɨ˨ tɕie˦] [ʔɣɛw˦˨ tɕi˦˨ ʔɨwk˦ ʔɨwk˦] [jaw⁴ tsɨ³ tʂɨ¹ ʋu² tʂi¹]', localeId :'und-fonipa' }, + { lang: 'Armenian', sample: 'Չին ֆիզիկոսը օճառաջուր ցողելով բժշկում է հայ գնդապետի փքված ձախ թևը։' }, { lang: 'Azerbaijani', sample: 'Zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq.', localeId :'az' }, { lang: 'Belarusian', sample: 'У Іўі худы жвавы чорт у зялёнай камізэльцы пабег пад’есці фаршу з юшкай.' }, { lang: 'Breton', sample: 'Yec’hed mat Jakez ! Skarzhit ar gwerennoù-mañ, kavet e vo gwin betek fin ho puhez.' },