diff --git a/packages/font-glyphs/src/auto-build/transformed-jobs-data.ptl b/packages/font-glyphs/src/auto-build/transformed-jobs-data.ptl index 709b48328f..cdee92d8c9 100644 --- a/packages/font-glyphs/src/auto-build/transformed-jobs-data.ptl +++ b/packages/font-glyphs/src/auto-build/transformed-jobs-data.ptl @@ -42,7 +42,7 @@ export : define Superscript : list list 0x1D42 'W' list 0x1D43 'a' list 0x1D44 'turna' - list 0x1D45 'scripta' + list 0x1D45 'aScript' list 0x1D46 'turnae' list 0x1D47 'b' list 0x1D48 'd' @@ -72,7 +72,7 @@ export : define Superscript : list list 0x1D60 'grek/phi' list 0x1D61 'grek/chi' list 0x1D78 'cyrl/en' - list 0x1D9B 'turnscripta' + list 0x1D9B 'turnaScript' list 0x1D9C 'c' list 0x1D9D 'cCurlyTail' list 0x1D9E 'eth' @@ -368,7 +368,7 @@ export : define MedievalComb_e : list list 0x1DE3 'rRotunda' list 0x1DE4 's' list 0x1DE6 'z' - list 0x1DE7 'scripta' + list 0x1DE7 'aScript' list 0x1DEA 'schwa' list 0x1DED 'oWithLightCentralizationStroke' list 0x1DF0 'uWithLightCentralizationStroke' diff --git a/packages/font-glyphs/src/letter/armenian/feh.ptl b/packages/font-glyphs/src/letter/armenian/feh.ptl index 2d9f93779f..e743960b56 100644 --- a/packages/font-glyphs/src/letter/armenian/feh.ptl +++ b/packages/font-glyphs/src/letter/armenian/feh.ptl @@ -10,43 +10,45 @@ glyph-block Letter-Armenian-Feh : begin glyph-block-import Common-Derivatives glyph-block-import Letter-Shared-Shapes : SerifFrame - define [FehBody df top bot ada adb] : glyph-proc + define [FehBody df top bot sw hook ada adb] : glyph-proc local midy : mix bot top HBarPos - local midyTop : midy + 0.5 * df.mvs - local midyBot : midy - 0.5 * df.mvs + local midyTop : midy + 0.5 * sw + local midyBot : midy - 0.5 * sw include : dispiro - widths.lhs df.mvs + widths.lhs sw straight.left.start df.middle top archv flatside.ld df.leftSB midyBot top ada adb arcvh straight.right.end df.middle midyBot [heading Rightward] include : dispiro - widths.rhs df.mvs + widths.rhs sw straight.right.start df.middle midyTop [heading Rightward] archv flatside.rd df.rightSB 0 midyTop ada adb - hookend 0 (sw -- df.mvs) - g4 (df.leftSB + OX) Hook + hookend 0 (sw -- sw) + g4 (df.leftSB + OX) (0 + hook) create-glyph 'armn/Feh' 0x556 : glyph-proc local df : include : DivFrame para.diversityM 3 include : df.markSet.capital - local ada : df.archDepthA ArchDepth df.mvs - local adb : df.archDepthB ArchDepth df.mvs - include : FehBody df CAP 0 ada adb - include : VBar.m df.middle 0 CAP df.mvs + local sw : Math.min df.mvs : AdviceStroke2 3 3 CAP df.div + local ada : df.archDepthA ArchDepth sw + local adb : df.archDepthB ArchDepth sw + include : FehBody df CAP 0 sw Hook ada adb + include : VBar.m df.middle 0 CAP sw if SLAB : begin - local sf : SerifFrame.fromDf df CAP 0 + local sf : SerifFrame.fromDf df CAP 0 (swSerif -- sw) include sf.mt.right create-glyph 'armn/feh' 0x586 : glyph-proc local df : include : DivFrame para.diversityM 3 include : df.markSet.bp - local ada : df.archDepthA SmallArchDepth df.mvs - local adb : df.archDepthB SmallArchDepth df.mvs - include : FehBody df Ascender 0 ada adb - include : VBar.m df.middle Descender Ascender df.mvs + local sw : Math.min df.mvs : AdviceStroke2 3 3 Ascender df.div + local ada : df.archDepthA SmallArchDepth sw + local adb : df.archDepthB SmallArchDepth sw + include : FehBody df Ascender 0 sw Hook ada adb + include : VBar.m df.middle Descender Ascender sw if SLAB : begin - local sf : SerifFrame.fromDf df Ascender Descender + local sf : SerifFrame.fromDf df Ascender Descender (swSerif -- sw) include sf.mb.full diff --git a/packages/font-glyphs/src/letter/armenian/hook-group.ptl b/packages/font-glyphs/src/letter/armenian/hook-group.ptl index 4020f0c256..cba3877f40 100644 --- a/packages/font-glyphs/src/letter/armenian/hook-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/hook-group.ptl @@ -11,25 +11,27 @@ glyph-block Letter-Armenian-Hook-Group : begin glyph-block-import Letter-Shared-Shapes : nShoulder uBowl SerifFrame glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar - define [RightHook df top bot sw _hook _ada _adb] : glyph-proc + define [RightHook df top bot _sw _hook _ada _adb] : glyph-proc + local sw : fallback _sw df.mvs local hook : fallback _hook Hook local ada : fallback _ada ArchDepthA local adb : fallback _adb ArchDepthB local yMid : if (top - bot > ada + adb) (top - ada) : mix top bot (ada / (ada + adb)) include : dispiro - widths.lhs df.mvs + widths.lhs sw g4 df.rightSB (top - hook) hookstart top (sw -- sw) flat df.leftSB yMid curl df.leftSB bot [heading Downward] - define [LeftHook df top bot sw _hook _ada _adb] : glyph-proc + define [LeftHook df top bot _sw _hook _ada _adb] : glyph-proc + local sw : fallback _sw df.mvs local hook : fallback _hook Hook local ada : fallback _ada ArchDepthA local adb : fallback _adb ArchDepthB local yMid : if (top - bot > ada + adb) (top - adb) : mix top bot (adb / (ada + adb)) include : dispiro - widths.rhs df.mvs + widths.rhs sw g4 df.leftSB (top - hook) hookstart top (sw -- sw) flat df.rightSB yMid diff --git a/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl index cfac266194..b9be9789f3 100644 --- a/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl @@ -279,7 +279,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin include : VBar.l df.leftSB 0 XH df.mvs # Combination of nShoulder.knots and the straight 2 shape - local fine : df.mvs * (ShoulderFine / Stroke) + local fine : ShoulderFine * (df.mvs / Stroke) local left : Math.max (df.rightSB - [HSwToV df.mvs] - jut) df.middle include : dispiro widths.rhs fine @@ -291,8 +291,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin if SLAB : begin local sf : SerifFrame.fromDf df XH 0 include sf.lt.outer - if [not para.isItalic] : begin - include : composite-proc sf.lb.outer + if [not para.isItalic] : include sf.lb.outer # Alternate straight 'n' form # include : nShoulder.shape @@ -305,8 +304,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin # if SLAB : begin # local sf : SerifFrame.fromDf df XH 0 # include sf.lt.outer - # if [not para.isItalic] : begin - # include : composite-proc sf.lb.full + # if [not para.isItalic] : include sf.lb.full do "Seh" create-glyph 'armn/seh' 0x57D : glyph-proc diff --git a/packages/font-glyphs/src/letter/armenian/shared.ptl b/packages/font-glyphs/src/letter/armenian/shared.ptl index 6a251e3993..e29479bdf3 100644 --- a/packages/font-glyphs/src/letter/armenian/shared.ptl +++ b/packages/font-glyphs/src/letter/armenian/shared.ptl @@ -14,21 +14,22 @@ glyph-block Letter-Armenian-Shared-Shapes : begin define highBarPos XH define jut Jut - define JUT-NORMAL 0 - define JUT-SHORT 1 - define JUT-RIGHT 2 - define JUT-LEFT 3 + define JUT : object + NORMAL 0 + SHORT 1 + RIGHT 2 + LEFT 3 glyph-block-export ArmHBar define [ArmHBar hPos df] : namespace define left : match hPos - [Just JUT-RIGHT] df.rightSB - [Just JUT-LEFT] (df.leftSB - (jut * [if SLAB 1.5 1]) + [HSwToV : 0.5 * df.mvs]) + [Just JUT.RIGHT] df.rightSB + [Just JUT.LEFT] (df.leftSB - (jut * [if SLAB 1.5 1]) + [HSwToV : 0.5 * df.mvs]) -- df.leftSB define right : match hPos - [Just JUT-RIGHT] (df.rightSB + (jut * [if SLAB 1.5 1]) - [HSwToV : 0.5 * df.mvs]) - [Just JUT-SHORT] (df.rightSB - (jut - [HSwToV : 0.5 * df.mvs]) * df.div) - [Just JUT-LEFT] df.leftSB + [Just JUT.RIGHT] (df.rightSB + (jut * [if SLAB 1.5 1]) - [HSwToV : 0.5 * df.mvs]) + [Just JUT.SHORT] (df.rightSB - (jut - [HSwToV : 0.5 * df.mvs]) * df.div) + [Just JUT.LEFT] df.leftSB -- df.rightSB export : define [cap] : glyph-proc @@ -46,10 +47,10 @@ glyph-block Letter-Armenian-Shared-Shapes : begin export : define [at y] : glyph-proc include : HBar.m left right y df.mvs - set [ArmHBar.normal df] : ArmHBar JUT-NORMAL df - set [ArmHBar.short df] : ArmHBar JUT-SHORT df - set [ArmHBar.right df] : ArmHBar JUT-RIGHT df - set [ArmHBar.left df] : ArmHBar JUT-LEFT df + set [ArmHBar.normal df] : ArmHBar JUT.NORMAL df + set [ArmHBar.short df] : ArmHBar JUT.SHORT df + set [ArmHBar.right df] : ArmHBar JUT.RIGHT df + set [ArmHBar.left df] : ArmHBar JUT.LEFT df glyph-block-export TwoNeck define [TwoNeck df top bot _left _right _adb _flatp] : begin diff --git a/packages/font-glyphs/src/letter/armenian/upper-ho.ptl b/packages/font-glyphs/src/letter/armenian/upper-ho.ptl index 604bb7e30e..2c57d800bf 100644 --- a/packages/font-glyphs/src/letter/armenian/upper-ho.ptl +++ b/packages/font-glyphs/src/letter/armenian/upper-ho.ptl @@ -30,6 +30,7 @@ glyph-block Letter-Armenian-Upper-Ho : begin curl df.middle CAP [heading Rightward] archv flatside.rd df.rightSB midyBot CAP ArchDepthA ArchDepthB + arcvh straight.left.end df.middle midyBot [heading Leftward] include : dispiro diff --git a/packages/font-glyphs/src/letter/armenian/upper-yi.ptl b/packages/font-glyphs/src/letter/armenian/upper-yi.ptl index 2e92866534..dd00720d21 100644 --- a/packages/font-glyphs/src/letter/armenian/upper-yi.ptl +++ b/packages/font-glyphs/src/letter/armenian/upper-yi.ptl @@ -18,10 +18,11 @@ glyph-block Letter-Armenian-Upper-Yi : begin local ze : CyrZe 0 0 CAP 0 left -- df.leftSB right -- df.rightSB - blend -- (1 + 2 * O / (df.rightSB - df.leftSB)) + blend -- (1 + (2 * O) / (df.rightSB - df.leftSB)) hook -- Hook + op -- HBarPos include : ze.Shape if SLAB : begin - local midy : mix 0 CAP OverlayPos + local midy : mix 0 CAP HBarPos local vJut : Math.min VJut : CAP - 2 * Hook - df.mvs include : VBar.l (df.leftSB - 2 * O) (midy - 0.5 * vJut) (midy + 0.5 * vJut) df.mvs diff --git a/packages/font-glyphs/src/letter/cyrillic/orthography.ptl b/packages/font-glyphs/src/letter/cyrillic/orthography.ptl index 3c21cbf655..1351c36440 100644 --- a/packages/font-glyphs/src/letter/cyrillic/orthography.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/orthography.ptl @@ -58,7 +58,7 @@ glyph-block Letter-Cyrillic-Orthography : begin link-gr LocalizedForm.SRB.Italic 'cyrl/te/reduced' 'cyrl/te/reduced.SRB' link-gr LocalizedForm.BGR 'cyrl/ve' 'cyrl/ve.BGR' - link-gr LocalizedForm.BGR 'cyrl/ghe' 'cyrl/ghe.italic' + link-gr LocalizedForm.BGR 'cyrl/ghe' 'cyrl/ghe.BGR' link-gr LocalizedForm.BGR 'cyrl/De' 'cyrl/De.BGR' link-gr LocalizedForm.BGR 'cyrl/de' 'cyrl/de.BGR' link-gr LocalizedForm.BGR 'cyrl/zhe' 'cyrl/zhe.BGR' diff --git a/packages/font-glyphs/src/letter/cyrillic/yeri.ptl b/packages/font-glyphs/src/letter/cyrillic/yeri.ptl index 82d0c653f7..6e5abfa9d5 100644 --- a/packages/font-glyphs/src/letter/cyrillic/yeri.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/yeri.ptl @@ -143,7 +143,7 @@ glyph-block Letter-Cyrillic-Yeri : begin local bowl : top * pBar + HalfStroke local turnRadius : bowl * 0.45 local turnbottom : mix 0 bowl (ArchDepthB / (ArchDepthA + ArchDepthB)) - local trShrink [Math.pow ((right - left) / (RightSB - SB)) 0.5] + local trShrink : Math.sqrt : (right - left) / (RightSB - SB) include : dispiro widths.rhs stroke flat (right - Stroke * 0.2) 0 [heading Leftward] @@ -215,7 +215,7 @@ glyph-block Letter-Cyrillic-Yeri : begin define [CyrYeryShape LeftHalf df top fBackYer fTail] : glyph-proc local sw : if fBackYer [AdviceStroke 3.25 df.div] df.mvs - local jut : Math.min Jut : [Math.pow (sw / Stroke) 0.5] * Jut + local jut : Math.min Jut : [Math.sqrt : sw / Stroke] * Jut local xm : mix (df.rightSB - [HSwToV sw]) (df.middle + [HSwToV : 0.5 * sw]) 0.75 include : if fBackYer diff --git a/packages/font-glyphs/src/letter/greek/phi.ptl b/packages/font-glyphs/src/letter/greek/phi.ptl index 770bd1ad06..51f684ad8f 100644 --- a/packages/font-glyphs/src/letter/greek/phi.ptl +++ b/packages/font-glyphs/src/letter/greek/phi.ptl @@ -13,10 +13,10 @@ glyph-block Letter-Greek-Phi : begin glyph-block-import Letter-Latin-Lower-AE-OE : SubDfAndShift define [VarPhiRing fFlatTB df y2 y3] : glyph-proc - local gap : Math.max (0.25 * (df.rightSB - df.leftSB)) : HSwToV df.mvs include : VBar.m df.middle y2 y3 df.mvs include : if fFlatTB - OShapeFlatTB y3 y2 df.leftSB df.rightSB df.mvs (ArchDepthA * df.div) (ArchDepthB * df.div) gap + OShapeFlatTB y3 y2 df.leftSB df.rightSB df.mvs (ArchDepthA * df.div) (ArchDepthB * df.div) + Math.max (0.25 * (df.rightSB - df.leftSB)) : HSwToV df.mvs OShape y3 y2 df.leftSB df.rightSB df.mvs (ArchDepthA * df.div) (ArchDepthB * df.div) define [CyrlEfSplitRing fFlatTB df y2 y3] : glyph-proc @@ -25,17 +25,19 @@ glyph-block Letter-Greek-Phi : begin local adb : subDf.archDepthB SmallArchDepth df.mvs include : VBar.m df.middle y2 y3 df.mvs - include : with-transform [ApparentTranslate 0 y2] : union + include : union OBarRight.shape - top -- (y3 - y2) + top -- y3 + bot -- y2 left -- df.leftSB - right -- df.middle + [HSwToV : 0.5 * df.mvs] + right -- (df.middle + [HSwToV : 0.5 * df.mvs]) sw -- df.mvs ada -- ada adb -- adb OBarLeft.shape - top -- (y3 - y2) - left -- df.middle - [HSwToV : 0.5 * df.mvs] + top -- y3 + bot -- y2 + left -- (df.middle - [HSwToV : 0.5 * df.mvs]) right -- df.rightSB sw -- df.mvs ada -- ada diff --git a/packages/font-glyphs/src/letter/latin/lower-a.ptl b/packages/font-glyphs/src/letter/latin/lower-a.ptl index 7ee90c87ac..9e2a1eeaf3 100644 --- a/packages/font-glyphs/src/letter/latin/lower-a.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-a.ptl @@ -254,13 +254,13 @@ glyph-block Letter-Latin-Lower-A : begin create-glyph "a.\(suffix)" : glyph-proc include : MarkSet.e include : body [DivFrame 1] XH bar no-shape - create-glyph "largescripta.\(suffix)" : glyph-proc + create-glyph "AScript.\(suffix)" : glyph-proc include : MarkSet.capital include : body [DivFrame 1] CAP bar SingleStorey.ScriptCut - create-glyph "scripta.\(suffix)" : glyph-proc + create-glyph "aScript.\(suffix)" : glyph-proc include : MarkSet.e include : body [DivFrame 1] XH bar SingleStorey.ScriptCut - create-glyph "invscripta.\(suffix)" : glyph-proc + create-glyph "invaScript.\(suffix)" : glyph-proc include : MarkSet.e include : body [DivFrame 1] XH bar.inv SingleStorey.InvScriptCut @@ -275,15 +275,15 @@ glyph-block Letter-Latin-Lower-A : begin derive-composites 'aRetroflexHook' 0x1D8F 'a/rtailBase' RetroflexHook.rSideJut RightSB 0 (yOverflow -- Stroke) - select-variant 'scripta' 0x251 (follow -- [conditional-follow SLAB 'scripta/autoSerifed/slab' 'scripta/autoSerifed/sans']) - select-variant 'largescripta' 0x2C6D (follow -- [conditional-follow SLAB 'scripta/autoSerifed/slab' 'scripta/autoSerifed/sans']) - select-variant 'invscripta' 0xAB64 (follow -- [conditional-follow SLAB 'scripta/autoSerifed/slab' 'scripta/autoSerifed/sans']) + select-variant 'aScript' 0x251 (follow -- [conditional-follow SLAB 'aScript/autoSerifed/slab' 'aScript/autoSerifed/sans']) + select-variant 'AScript' 0x2C6D (follow -- [conditional-follow SLAB 'aScript/autoSerifed/slab' 'aScript/autoSerifed/sans']) + select-variant 'invaScript' 0xAB64 (follow -- [conditional-follow SLAB 'aScript/autoSerifed/slab' 'aScript/autoSerifed/sans']) - derive-composites 'scriptaRetroflexHook' 0x1D90 'scripta.singleStoreySerifless' + derive-composites 'aScriptRetroflexHook' 0x1D90 'aScript.singleStoreySerifless' RetroflexHook.rSideJut RightSB 0 (yOverflow -- Stroke) - CreateTurnedLetter 'turnscripta' 0x252 'scripta' HalfAdvance (XH / 2) - CreateTurnedLetter 'turnlargescripta' 0x2C70 'largescripta' HalfAdvance (CAP / 2) + CreateTurnedLetter 'turnaScript' 0x252 'aScript' HalfAdvance (XH / 2) + CreateTurnedLetter 'turnAScript' 0x2C70 'AScript' HalfAdvance (CAP / 2) CreateAccentedComposition 'aDieresis' 0xE4 'a' 'dieresisAbove' CreateAccentedComposition 'aSbRsbUnderlineBelow' null 'a' 'sbRsbUnderlineBelow' diff --git a/packages/font-glyphs/src/letter/latin/lower-g.ptl b/packages/font-glyphs/src/letter/latin/lower-g.ptl index c0cb558bb3..dd3b5938f9 100644 --- a/packages/font-glyphs/src/letter/latin/lower-g.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-g.ptl @@ -173,7 +173,7 @@ glyph-block Letter-Latin-Lower-G : begin include : bodyShape df CAP include : hookShape df (CAP - hookStart) - create-glyph "gScriptPalatalHook.\(suffix)" : glyph-proc + create-glyph "gPalatalHook.\(suffix)" : glyph-proc local df : include : DivFrame para.diversityM 1 include : df.markSet.p set-base-anchor 'overlay' Middle (XH / 2) @@ -198,7 +198,7 @@ glyph-block Letter-Latin-Lower-G : begin select-variant 'gScript' 0x261 (shapeFrom -- 'g') (follow -- 'gScript') select-variant 'GScript' 0xA7AC (follow -- 'gScript') - select-variant 'gScriptPalatalHook' 0x1D83 (follow -- 'gScript') + select-variant 'gScriptPalatalHook' 0x1D83 (shapeFrom -- 'gPalatalHook') (follow -- 'gScript') select-variant 'cyrl/de.BGR' (shapeFrom -- 'g') (follow -- [conditional-follow SLAB 'g/singleStorey/autoSerifed/slab' 'g/singleStorey/autoSerifed/sans']) alias 'cyrl/de.SRB' null 'cyrl/de.BGR' diff --git a/packages/font-glyphs/src/letter/latin/s.ptl b/packages/font-glyphs/src/letter/latin/s.ptl index 55d7aa8aad..f236a19639 100644 --- a/packages/font-glyphs/src/letter/latin/s.ptl +++ b/packages/font-glyphs/src/letter/latin/s.ptl @@ -28,7 +28,7 @@ glyph-block Letter-Latin-S : begin define [AdviceSArchDepth y sign _stroke] : begin # Handle with extreme care. local stroke : fallback _stroke Stroke - local strokeFactor : stroke * [clamp 1 2 : linreg 126 1 137 1.025 stroke] * [clamp 0 1 : Math.pow (Width / HalfUPM) 0.5] + local strokeFactor : stroke * [clamp 1 2 : linreg 126 1 137 1.025 stroke] * [clamp 0 1 : Math.sqrt : Width / HalfUPM] local widthFactor : RightSB - SB local ss : y * 0.22 + 0.12 * strokeFactor + 0.05 * widthFactor return : ss + sign * TanSlope * SmoothAdjust @@ -340,14 +340,22 @@ glyph-block Letter-Latin-S : begin select-variant 'S' 'S' link-reduced-variant 'S/sansSerif' 'S' MathSansSerif + select-variant 's' 's' link-reduced-variant 's/sansSerif' 's' MathSansSerif + select-variant 'smcpS' 0xA731 (follow -- 'S') + + select-variant 's/phoneticRight' + select-variant 'revS' 0x1A7 (follow -- 'S') select-variant 'revs' 0x1A8 (follow -- 's') + alias 'cyrl/Dze' 0x405 'S' alias 'cyrl/dze' 0x455 's' - alias 'cyrl/ghe.italic' null 'revs' + + select-variant 'cyrl/ghe.italic' (shapeFrom -- 'revs') (follow -- 's') + alias 'cyrl/ghe.BGR' null 'cyrl/ghe.italic' alias 'cyrl/DzeRev' 0xA644 'revS' alias 'cyrl/dzeRev' 0xA645 'revs' @@ -360,25 +368,25 @@ glyph-block Letter-Latin-S : begin select-variant 'SSwash' 0x2C7E select-variant 'sSwash' 0x23F + select-variant 'sCurlyTail' 0x1DF1E (follow -- 'sSwash') select-variant 'S/descBase' (shapeFrom -- 'S') (follow -- 'SRTail') - select-variant 's/ascBase' (shapeFrom -- 's') select-variant 's/descBase' (shapeFrom -- 's') (follow -- 'sRTail') - select-variant 'revs/descBase' (shapeFrom -- 'revs') (follow -- 'sRTail') - - select-variant 's/phoneticRight' derive-composites 'SRTail' 0xA7C5 'S/descBase' RetroflexHook.l SB 0 (yAttach -- DToothlessRise) (refSw -- [AdviceStroke2 2 3 CAP]) derive-composites 'sRTail' 0x282 's/descBase' RetroflexHook.l SB 0 (yAttach -- DToothlessRise) (refSw -- [AdviceStroke2 2 3 XH]) - derive-composites 'cyrl/gheDescender.italic' null 'revs/descBase' + + select-variant 'cyrl/ghe.italic/descBase' (shapeFrom -- 'revs') (follow -- 'sRTail') + + derive-composites 'cyrl/gheDescender.italic' null 'cyrl/ghe.italic/descBase' CyrDescender.r DfLower.rightSB 0 (yAttach -- DToothlessRise) (refSw -- [AdviceStroke2 2 3 XH]) - derive-composites 'cyrl/gheDHook.italic' null 'revs/descBase' + derive-composites 'cyrl/gheDHook.italic' null 'cyrl/ghe.italic/descBase' PalatalHook.r DfLower.rightSB 0 (yAttach -- DToothlessRise) (refSw -- [AdviceStroke2 2 3 XH]) - derive-composites 'cyrl/ghayn.italic' null 'revs' + derive-composites 'cyrl/ghayn.italic' null 'cyrl/ghe.italic' FlatSlashShape Middle (XH / 2) (OverlayStroke / 2) (-0.2) 0.75 derive-composites 'cyrl/gheStrokeHook.italic' null 'cyrl/gheDHook.italic' FlatSlashShape Middle (XH / 2) (OverlayStroke / 2) (-0.2) 0.75 @@ -388,6 +396,8 @@ glyph-block Letter-Latin-S : begin y -- 0 yAttach -- [mix O [AdviceSArchDepth XH (-1) [AdviceStroke2 2 3 XH]] : archv.yFromX 0.75] + select-variant 's/ascBase' (shapeFrom -- 's') + derive-composites "s/compLigLeft" null "s/ascBase" : glyph-proc eject-contour 'arcStartSerifR' local sw : ArcStartSerifWidth [AdviceStroke2 2 3 XH] diff --git a/packages/font-glyphs/src/letter/latin/x.ptl b/packages/font-glyphs/src/letter/latin/x.ptl index 886e43e78a..cac967a578 100644 --- a/packages/font-glyphs/src/letter/latin/x.ptl +++ b/packages/font-glyphs/src/letter/latin/x.ptl @@ -63,14 +63,11 @@ glyph-block Letter-Latin-X : begin local fine : [AdviceStroke 3] * (sw / Stroke) - local leftXExt : leftX - [if fSlab SideJut 0] - local rightXExt : rightX + [if fSlab SideJut 0] - return : dispiro if fHalf flat [mix leftX rightX 0.5] [mix leftY rightY 0.5] [widths.center fine] list - flat leftXExt (leftY - sign * sw / 2) [widths.center.heading sw Rightward] + flat (leftX - [if fSlab SideJut 0]) (leftY - sign * sw / 2) [widths.center.heading sw Rightward] curl (leftX + TINY) (leftY - sign * sw / 2) [widths.center.heading sw Rightward] alsoThruThem {{blendK1X blendK1Y} {blendK2X blendK2Y}} flat [mix leftX rightX pStraightX] [mix leftY rightY pStraightY] [widths.center : mix sw fine 0.5] @@ -78,7 +75,7 @@ glyph-block Letter-Latin-X : begin curl [mix leftX rightX (1 - pStraightX)] [mix leftY rightY (1 - pStraightY)] [widths.center : mix sw fine 0.5] alsoThruThem {{(1 - blendK2X) (1 - blendK2Y)} {(1 - blendK1X) (1 - blendK1Y)}} flat (rightX - TINY) (rightY + sign * sw / 2) [widths.center.heading sw Rightward] - curl rightXExt (rightY + sign * sw / 2) [widths.center.heading sw Rightward] + curl (rightX + [if fSlab SideJut 0]) (rightY + sign * sw / 2) [widths.center.heading sw Rightward] glyph-block-export XCursiveHalfShape define [XCursiveHalfShape] : with-params [ diff --git a/packages/font-glyphs/src/meta/unicode-knowledge.ptl b/packages/font-glyphs/src/meta/unicode-knowledge.ptl index fae75c06f0..42532d7f63 100644 --- a/packages/font-glyphs/src/meta/unicode-knowledge.ptl +++ b/packages/font-glyphs/src/meta/unicode-knowledge.ptl @@ -212,7 +212,7 @@ export : define decompOverrides : object 0xA7CC { 'S' 'longSlash' } 0xA7CD { 's' 'shortSlash' } - 0xAB30 { 'scripta' 'hStrike' } + 0xAB30 { 'aScript' 'hStrike' } 0xAB3E { 'frak/o' 'shortSlash' } 0xAB3F { 'turnc' 'shortSlash' } 0xAB4F { 'uShortLeg' 'hStrike' } diff --git a/packages/font-glyphs/src/symbol/punctuation/joiners.ptl b/packages/font-glyphs/src/symbol/punctuation/joiners.ptl index 179f0f625a..7329870443 100644 --- a/packages/font-glyphs/src/symbol/punctuation/joiners.ptl +++ b/packages/font-glyphs/src/symbol/punctuation/joiners.ptl @@ -26,8 +26,8 @@ glyph-block Symbol-Punctuation-Joiners : do create-glyph 'zwnj' 0x200C : glyph-proc set-width 0 include : VBar.m 0 Descender CAP fine - define outerSize : size + 0.5 * fine * [Math.sqrt 2] - define innerSize : size - 0.5 * fine * [Math.sqrt 2] + define outerSize : size + fine * Math.SQRT1_2 + define innerSize : size - fine * Math.SQRT1_2 include : difference spiro-outline widths.center fine diff --git a/params/variants.toml b/params/variants.toml index ef28a81e04..1ee1a9569c 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -2139,8 +2139,8 @@ selectorAffix."a/rtailBase" = "doubleStorey" selectorAffix."a/turnABase" = "doubleStorey" selectorAffix."a/singleStorey/autoSerifed/slab" = "singleStorey" selectorAffix."a/singleStorey/autoSerifed/sans" = "singleStorey" -selectorAffix."scripta/autoSerifed/slab" = "singleStorey" -selectorAffix."scripta/autoSerifed/sans" = "singleStorey" +selectorAffix."aScript/autoSerifed/slab" = "singleStorey" +selectorAffix."aScript/autoSerifed/sans" = "singleStorey" [prime.a.variants-buildup.stages.storey.single-storey] rank = 2 @@ -2153,8 +2153,8 @@ selectorAffix."a/rtailBase" = "singleStorey" selectorAffix."a/turnABase" = "doubleStorey" selectorAffix."a/singleStorey/autoSerifed/slab" = "singleStorey" selectorAffix."a/singleStorey/autoSerifed/sans" = "singleStorey" -selectorAffix."scripta/autoSerifed/slab" = "singleStorey" -selectorAffix."scripta/autoSerifed/sans" = "singleStorey" +selectorAffix."aScript/autoSerifed/slab" = "singleStorey" +selectorAffix."aScript/autoSerifed/sans" = "singleStorey" [prime.a.variants-buildup.stages.double-storey-hook."*"] next = "bar" @@ -2170,8 +2170,8 @@ selectorAffix."a/rtailBase" = "" selectorAffix."a/turnABase" = "" selectorAffix."a/singleStorey/autoSerifed/slab" = "" selectorAffix."a/singleStorey/autoSerifed/sans" = "" -selectorAffix."scripta/autoSerifed/slab" = "" -selectorAffix."scripta/autoSerifed/sans" = "" +selectorAffix."aScript/autoSerifed/slab" = "" +selectorAffix."aScript/autoSerifed/sans" = "" [prime.a.variants-buildup.stages.double-storey-hook.hook-serifed] rank = 2 @@ -2184,8 +2184,8 @@ selectorAffix."a/rtailBase" = "hookInwardSerifed" selectorAffix."a/turnABase" = "hookInwardSerifed" selectorAffix."a/singleStorey/autoSerifed/slab" = "" selectorAffix."a/singleStorey/autoSerifed/sans" = "" -selectorAffix."scripta/autoSerifed/slab" = "" -selectorAffix."scripta/autoSerifed/sans" = "" +selectorAffix."aScript/autoSerifed/slab" = "" +selectorAffix."aScript/autoSerifed/sans" = "" [prime.a.variants-buildup.stages.ear."*"] next = "bar" @@ -2200,8 +2200,8 @@ selectorAffix."a/rtailBase" = "" selectorAffix."a/turnABase" = "" selectorAffix."a/singleStorey/autoSerifed/slab" = "" selectorAffix."a/singleStorey/autoSerifed/sans" = "" -selectorAffix."scripta/autoSerifed/slab" = "" -selectorAffix."scripta/autoSerifed/sans" = "" +selectorAffix."aScript/autoSerifed/slab" = "" +selectorAffix."aScript/autoSerifed/sans" = "" [prime.a.variants-buildup.stages.ear.earless-corner] rank = 2 @@ -2213,8 +2213,8 @@ selectorAffix."a/rtailBase" = "earlessCorner" selectorAffix."a/turnABase" = "" selectorAffix."a/singleStorey/autoSerifed/slab" = "earlessCorner" selectorAffix."a/singleStorey/autoSerifed/sans" = "earlessCorner" -selectorAffix."scripta/autoSerifed/slab" = "" -selectorAffix."scripta/autoSerifed/sans" = "" +selectorAffix."aScript/autoSerifed/slab" = "" +selectorAffix."aScript/autoSerifed/sans" = "" [prime.a.variants-buildup.stages.ear.earless-rounded] rank = 3 @@ -2226,8 +2226,8 @@ selectorAffix."a/rtailBase" = "earlessRounded" selectorAffix."a/turnABase" = "" selectorAffix."a/singleStorey/autoSerifed/slab" = "earlessRounded" selectorAffix."a/singleStorey/autoSerifed/sans" = "earlessRounded" -selectorAffix."scripta/autoSerifed/slab" = "" -selectorAffix."scripta/autoSerifed/sans" = "" +selectorAffix."aScript/autoSerifed/slab" = "" +selectorAffix."aScript/autoSerifed/sans" = "" [prime.a.variants-buildup.stages.bar.serifless] rank = 1 @@ -2240,8 +2240,8 @@ selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "serifless" selectorAffix."a/singleStorey/autoSerifed/slab" = "serifless" selectorAffix."a/singleStorey/autoSerifed/sans" = "serifless" -selectorAffix."scripta/autoSerifed/slab" = "serifless" -selectorAffix."scripta/autoSerifed/sans" = "serifless" +selectorAffix."aScript/autoSerifed/slab" = "serifless" +selectorAffix."aScript/autoSerifed/sans" = "serifless" [prime.a.variants-buildup.stages.bar.serifed] rank = 2 @@ -2253,8 +2253,8 @@ selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "serifed" selectorAffix."a/singleStorey/autoSerifed/slab" = { if = [{ storey = "double-storey" }], then = "doubleSerifed", else = "serifed" } selectorAffix."a/singleStorey/autoSerifed/sans" = "serifed" -selectorAffix."scripta/autoSerifed/slab" = "serifed" -selectorAffix."scripta/autoSerifed/sans" = "serifed" +selectorAffix."aScript/autoSerifed/slab" = "serifed" +selectorAffix."aScript/autoSerifed/sans" = "serifed" [prime.a.variants-buildup.stages.bar.double-serifed] rank = 3 @@ -2267,8 +2267,8 @@ selectorAffix."a/rtailBase" = "topSerifed" selectorAffix."a/turnABase" = "serifed" selectorAffix."a/singleStorey/autoSerifed/slab" = "doubleSerifed" selectorAffix."a/singleStorey/autoSerifed/sans" = "doubleSerifed" -selectorAffix."scripta/autoSerifed/slab" = "serifed" -selectorAffix."scripta/autoSerifed/sans" = "serifed" +selectorAffix."aScript/autoSerifed/slab" = "serifed" +selectorAffix."aScript/autoSerifed/sans" = "serifed" [prime.a.variants-buildup.stages.bar.tailed] rank = 4 @@ -2280,8 +2280,8 @@ selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "tailed" selectorAffix."a/singleStorey/autoSerifed/slab" = { if = [{ storey = "double-storey" }], then = "tailedSerifed", else = "tailed" } selectorAffix."a/singleStorey/autoSerifed/sans" = "tailed" -selectorAffix."scripta/autoSerifed/slab" = "tailed" -selectorAffix."scripta/autoSerifed/sans" = "tailed" +selectorAffix."aScript/autoSerifed/slab" = "tailed" +selectorAffix."aScript/autoSerifed/sans" = "tailed" [prime.a.variants-buildup.stages.bar.tailed-serifed] rank = 5 @@ -2294,8 +2294,8 @@ selectorAffix."a/rtailBase" = "topSerifed" selectorAffix."a/turnABase" = "tailed" selectorAffix."a/singleStorey/autoSerifed/slab" = "tailedSerifed" selectorAffix."a/singleStorey/autoSerifed/sans" = "tailedSerifed" -selectorAffix."scripta/autoSerifed/slab" = "tailed" -selectorAffix."scripta/autoSerifed/sans" = "tailed" +selectorAffix."aScript/autoSerifed/slab" = "tailed" +selectorAffix."aScript/autoSerifed/sans" = "tailed" [prime.a.variants-buildup.stages.bar.toothless-corner] rank = 6 @@ -2308,8 +2308,8 @@ selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "toothlessCorner" selectorAffix."a/singleStorey/autoSerifed/slab" = "doubleSerifed" selectorAffix."a/singleStorey/autoSerifed/sans" = "serifless" -selectorAffix."scripta/autoSerifed/slab" = "serifed" -selectorAffix."scripta/autoSerifed/sans" = "serifless" +selectorAffix."aScript/autoSerifed/slab" = "serifed" +selectorAffix."aScript/autoSerifed/sans" = "serifless" [prime.a.variants-buildup.stages.bar.toothless-rounded] rank = 7 @@ -2322,8 +2322,8 @@ selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "toothlessRounded" selectorAffix."a/singleStorey/autoSerifed/slab" = "doubleSerifed" selectorAffix."a/singleStorey/autoSerifed/sans" = "serifless" -selectorAffix."scripta/autoSerifed/slab" = "serifed" -selectorAffix."scripta/autoSerifed/sans" = "serifless" +selectorAffix."aScript/autoSerifed/slab" = "serifed" +selectorAffix."aScript/autoSerifed/sans" = "serifless" @@ -2766,9 +2766,9 @@ descriptionAffix = "double-storey shape" selectorAffix.g = "doubleStorey" selectorAffix."g/sansSerif" = "doubleStorey" selectorAffix."g/hookTopBase" = "singleStoreySerifless" -selectorAffix."gScript" = "singleStoreyScriptCut" selectorAffix."g/singleStorey/autoSerifed/slab" = "singleStoreySerifed" selectorAffix."g/singleStorey/autoSerifed/sans" = "singleStoreySerifless" +selectorAffix.gScript = "singleStoreyScriptCut" [prime.g.variants-buildup.stages.openness."*"] next = "END" @@ -2779,9 +2779,9 @@ keyAffix = "" selectorAffix.g = "" selectorAffix."g/sansSerif" = "" selectorAffix."g/hookTopBase" = "" -selectorAffix."gScript" = "" selectorAffix."g/singleStorey/autoSerifed/slab" = "" selectorAffix."g/singleStorey/autoSerifed/sans" = "" +selectorAffix.gScript = "" [prime.g.variants-buildup.stages.openness.open] rank = 1 @@ -2789,9 +2789,9 @@ descriptionAffix = "open contour" selectorAffix.g = "open" selectorAffix."g/sansSerif" = "open" selectorAffix."g/hookTopBase" = "" -selectorAffix."gScript" = "" selectorAffix."g/singleStorey/autoSerifed/slab" = "" selectorAffix."g/singleStorey/autoSerifed/sans" = "" +selectorAffix.gScript = "" [prime.g.variants-buildup.stages.storey.single-storey] next = "hook" @@ -2800,9 +2800,9 @@ descriptionAffix = "single-storey shape" selectorAffix.g = "singleStorey" selectorAffix."g/sansSerif" = "singleStorey" selectorAffix."g/hookTopBase" = "singleStorey" -selectorAffix."gScript" = "singleStorey" selectorAffix."g/singleStorey/autoSerifed/slab" = "singleStorey" selectorAffix."g/singleStorey/autoSerifed/sans" = "singleStorey" +selectorAffix.gScript = "singleStorey" [prime.g.variants-buildup.stages.hook."*"] next = "ear" @@ -2813,9 +2813,9 @@ keyAffix = "" selectorAffix.g = "" selectorAffix."g/sansSerif" = "" selectorAffix."g/hookTopBase" = "" -selectorAffix."gScript" = "" selectorAffix."g/singleStorey/autoSerifed/slab" = "" selectorAffix."g/singleStorey/autoSerifed/sans" = "" +selectorAffix.gScript = "" [prime.g.variants-buildup.stages.hook.flat-hook] rank = 2 @@ -2823,18 +2823,18 @@ descriptionAffix = "flat bottom hook" selectorAffix.g = "flatHook" selectorAffix."g/sansSerif" = "flatHook" selectorAffix."g/hookTopBase" = "flatHook" -selectorAffix."gScript" = "flatHook" selectorAffix."g/singleStorey/autoSerifed/slab" = "flatHook" selectorAffix."g/singleStorey/autoSerifed/sans" = "flatHook" +selectorAffix.gScript = "flatHook" [prime.g.variants-buildup.stages.ear.serifless] rank = 1 selectorAffix.g = "serifless" selectorAffix."g/sansSerif" = "serifless" selectorAffix."g/hookTopBase" = "serifless" -selectorAffix."gScript" = "scriptCut" selectorAffix."g/singleStorey/autoSerifed/slab" = "serifless" selectorAffix."g/singleStorey/autoSerifed/sans" = "serifless" +selectorAffix.gScript = "scriptCut" [prime.g.variants-buildup.stages.ear.serifed] rank = 2 @@ -2842,9 +2842,9 @@ descriptionAffix = "top-right serif" selectorAffix.g = "serifed" selectorAffix."g/sansSerif" = "serifless" selectorAffix."g/hookTopBase" = "serifless" -selectorAffix."gScript" = "scriptCut" selectorAffix."g/singleStorey/autoSerifed/slab" = "serifed" selectorAffix."g/singleStorey/autoSerifed/sans" = "serifed" +selectorAffix.gScript = "scriptCut" [prime.g.variants-buildup.stages.ear.earless-corner] rank = 3 @@ -2852,9 +2852,9 @@ descriptionAffix = "earless (cornered top-right)" selectorAffix.g = "earlessCorner" selectorAffix."g/sansSerif" = "earlessCorner" selectorAffix."g/hookTopBase" = "earlessCornerHTB" -selectorAffix."gScript" = "scriptCut" selectorAffix."g/singleStorey/autoSerifed/slab" = "earlessCorner" selectorAffix."g/singleStorey/autoSerifed/sans" = "earlessCorner" +selectorAffix.gScript = "scriptCut" [prime.g.variants-buildup.stages.ear.earless-rounded] rank = 4 @@ -2862,9 +2862,9 @@ descriptionAffix = "earless (rounded top-right)" selectorAffix.g = "earlessRounded" selectorAffix."g/sansSerif" = "earlessRounded" selectorAffix."g/hookTopBase" = "serifless" -selectorAffix."gScript" = "scriptCut" selectorAffix."g/singleStorey/autoSerifed/slab" = "earlessRounded" selectorAffix."g/singleStorey/autoSerifed/sans" = "earlessRounded" +selectorAffix.gScript = "scriptCut"