From 2874d1ad8648126cc744d93ed15767482514bd40 Mon Sep 17 00:00:00 2001 From: be5invis Date: Sat, 13 May 2023 01:47:43 -0700 Subject: [PATCH] Add Characters: - CYRILLIC SMALL LETTER UNBLENDED UK (`U+1C88`) (#1517). - CYRILLIC CAPITAL LETTER MONOGRAPH UK (`U+A64A`) (#1517). - CYRILLIC SMALL LETTER MONOGRAPH UK (`U+A64B`) (#1517). --- .editorconfig | 2 +- changes/22.1.3.md | 4 + font-src/glyphs/letter/cyrillic.ptl | 1 + .../glyphs/letter/cyrillic/iotified-a.ptl | 9 ++- font-src/glyphs/letter/cyrillic/lower-uk.ptl | 37 ++++++++++ font-src/glyphs/letter/cyrillic/small-yus.ptl | 25 +++++-- .../glyphs/letter/latin-ext/upper-aa-ao.ptl | 4 +- font-src/glyphs/letter/latin/upper-a.ptl | 50 ++++++++----- font-src/glyphs/letter/latin/upper-y.ptl | 6 +- font-src/glyphs/letter/latin/v.ptl | 74 ++++++++++++------- font-src/glyphs/symbol/math/letter-like.ptl | 20 ++++- 11 files changed, 168 insertions(+), 64 deletions(-) create mode 100644 changes/22.1.3.md create mode 100644 font-src/glyphs/letter/cyrillic/lower-uk.ptl diff --git a/.editorconfig b/.editorconfig index c5aeebd6f..87f0ef784 100644 --- a/.editorconfig +++ b/.editorconfig @@ -6,6 +6,7 @@ end_of_line = lf trim_trailing_whitespace = true indent_style = tab indent_size = 4 +insert_final_newline = true [*.{js,jsx,ts,tsx}] insert_final_newline = true @@ -16,7 +17,6 @@ block_comment_end = */ [*.md] indent_style = space indent_size = 2 -insert_final_newline = true trim_trailing_whitespace = false # The indent size used in the `package.json` file cannot be changed diff --git a/changes/22.1.3.md b/changes/22.1.3.md new file mode 100644 index 000000000..6f6ac905c --- /dev/null +++ b/changes/22.1.3.md @@ -0,0 +1,4 @@ +Add Characters: + - CYRILLIC SMALL LETTER UNBLENDED UK (`U+1C88`) (#1517). + - CYRILLIC CAPITAL LETTER MONOGRAPH UK (`U+A64A`) (#1517). + - CYRILLIC SMALL LETTER MONOGRAPH UK (`U+A64B`) (#1517). diff --git a/font-src/glyphs/letter/cyrillic.ptl b/font-src/glyphs/letter/cyrillic.ptl index 032ab36e5..339bf695f 100644 --- a/font-src/glyphs/letter/cyrillic.ptl +++ b/font-src/glyphs/letter/cyrillic.ptl @@ -24,6 +24,7 @@ export : define [apply] : begin run-glyph-module "./cyrillic/te-midhook.mjs" run-glyph-module "./cyrillic/tse.mjs" run-glyph-module "./cyrillic/tshe.mjs" + run-glyph-module "./cyrillic/lower-uk.mjs" run-glyph-module "./cyrillic/yat.mjs" run-glyph-module "./cyrillic/yeri.mjs" run-glyph-module "./cyrillic/yu.mjs" diff --git a/font-src/glyphs/letter/cyrillic/iotified-a.ptl b/font-src/glyphs/letter/cyrillic/iotified-a.ptl index d89cc5824..bf01e7fec 100644 --- a/font-src/glyphs/letter/cyrillic/iotified-a.ptl +++ b/font-src/glyphs/letter/cyrillic/iotified-a.ptl @@ -114,12 +114,15 @@ glyph-block Letter-Cyrillic-Iotified-A : begin local xIotifiedBarRight : df.leftSB + HVContrast * df.mvs local botGap : Math.max ((df.rightSB - df.leftSB) * 0.08) [AdviceStroke 6] include : difference - WithTransform [ApparentTranslate shift 0] : ALetterShape subDf CAP df.mvs fStraightBar slabKind - intersection [MaskBelow df.mvs] [MaskLeft : mix xIotifiedBarRight [Math.min (subDf.leftSB + shift) (xIotifiedBarRight + botGap)] 0.5] + WithTransform [ApparentTranslate shift 0] + ALetterShape subDf fStraightBar slabKind CAP df.mvs + intersection [MaskBelow df.mvs] + MaskLeft : mix xIotifiedBarRight [Math.min (subDf.leftSB + shift) (xIotifiedBarRight + botGap)] 0.5 include : difference Iotified.A df CAP [mix df.leftSB df.rightSB (3 / 4)] (CAP / 2) (fCapital -- true) - WithTransform [ApparentTranslate shift 0] [AMaskShape subDf CAP df.mvs fStraightBar slabKind] + WithTransform [ApparentTranslate shift 0] + AMaskShape subDf fStraightBar CAP df.mvs do "iotified a" glyph-block-import Letter-Latin-Lower-A : DoubleStorey diff --git a/font-src/glyphs/letter/cyrillic/lower-uk.ptl b/font-src/glyphs/letter/cyrillic/lower-uk.ptl new file mode 100644 index 000000000..4c290ca64 --- /dev/null +++ b/font-src/glyphs/letter/cyrillic/lower-uk.ptl @@ -0,0 +1,37 @@ +$$include '../../../meta/macros.ptl' + +import [mix linreg clamp fallback] from"../../../support/utils.mjs" + +glyph-module + +glyph-block Letter-Cyrillic-Lower-Blended-Uk : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + + create-glyph 'cyrl/uk' 0xA64B : glyph-proc + include : MarkSet.b + + local kLeftX 0.8 + local kLeftY 0.875 + local kRightX 1 + local kRightY 1 + local yCross : mix 0 Ascender 0.45 + + local stress : AdviceStroke 2.75 + local fine : AdviceStroke 3 + + local smallRingRadius : (0.25 * (RightSB - SB)) + 0.5 * fine + local subDf : DivFrame ((2 * smallRingRadius + 2 * SB) / Width) + local ada : ArchDepthAOf smallRingRadius subDf.width + local adb : ArchDepthBOf smallRingRadius subDf.width + + include : dispiro + g4.down.start [mix Middle SB kLeftX] [mix 0 Ascender kLeftY] [widths.lhs.heading stress Downward] + g4 Middle yCross [widths.center stress] + g4 (Middle + smallRingRadius - OX) ada [widths.rhs fine] + arcvh + g4 (Middle + CorrectionOMidX * fine) O + archv + g4 (Middle - smallRingRadius + OX) adb + g4 Middle yCross [widths.center stress] + g4.up.mid [mix Middle RightSB kRightX] [mix 0 Ascender kRightY] [widths.lhs.heading stress Upward] diff --git a/font-src/glyphs/letter/cyrillic/small-yus.ptl b/font-src/glyphs/letter/cyrillic/small-yus.ptl index 66e99fffb..7729f648f 100644 --- a/font-src/glyphs/letter/cyrillic/small-yus.ptl +++ b/font-src/glyphs/letter/cyrillic/small-yus.ptl @@ -8,16 +8,20 @@ glyph-block Letter-Cyrillic-SmallYus : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives glyph-block-import Letter-Shared-Shapes : SerifFrame - glyph-block-import Letter-Latin-V : VShape glyph-block-import Letter-Latin-Upper-A : LambdaShape DeltaShape AMaskShape glyph-block-import Letter-Cyrillic-Iotified-A : Iotified define [CyrSmallYusShape df top straightBar _fine] : glyph-proc local fine : fallback _fine : AdviceStroke 3.3 df.div - include : LambdaShape df top fine straightBar (slab -- false) + include : LambdaShape + df -- df + fBarStraight -- straightBar + top -- top + sw -- fine + slab -- false include : intersection HBar.t df.leftSB df.rightSB (top / 2) fine - AMaskShape df top fine straightBar + AMaskShape df straightBar top fine include : VBar.m df.middle (top / 2) 0 fine if SLAB : begin @@ -28,11 +32,16 @@ glyph-block Letter-Cyrillic-SmallYus : begin include : tagged 'serifMB' sf.mb.full define [CyrClosedSmallYusShape df top straightBar _fine] : glyph-proc - local fine : fallback _fine : AdviceStroke 3.3 df.div - include : DeltaShape df top fine straightBar (slab -- false) + local fine : fallback _fine : AdviceStroke 2.75 df.div + include : DeltaShape + df -- df + top -- top + sw -- fine + fBarStraight -- straightBar + slab -- false include : intersection HBar.t df.leftSB df.rightSB (top / 2) fine - AMaskShape df top fine straightBar + AMaskShape df straightBar top fine if SLAB : begin local sf : SerifFrame.fromDf df top 0 (swSerif -- fine) @@ -54,14 +63,14 @@ glyph-block Letter-Cyrillic-SmallYus : begin create-forked-glyph 'cyrl/smallYus.curly' : CyrSmallYusShape df XH false create-glyph : glyph-proc - local df : DivFrame para.diversityM 3 + local df : DivFrame 1 set-width df.width include : df.markSet.capital create-forked-glyph 'cyrl/SmallYusClosed.straight' : CyrClosedSmallYusShape df CAP true create-forked-glyph 'cyrl/SmallYusClosed.curly' : CyrClosedSmallYusShape df CAP false create-glyph : glyph-proc - local df : DivFrame 1 3 + local df : DivFrame 1 set-width df.width include : df.markSet.e create-forked-glyph 'cyrl/smallYusClosed.straight' : CyrClosedSmallYusShape df XH true diff --git a/font-src/glyphs/letter/latin-ext/upper-aa-ao.ptl b/font-src/glyphs/letter/latin-ext/upper-aa-ao.ptl index eb3e8ba69..3d55cb199 100644 --- a/font-src/glyphs/letter/latin-ext/upper-aa-ao.ptl +++ b/font-src/glyphs/letter/latin-ext/upper-aa-ao.ptl @@ -16,12 +16,12 @@ glyph-block Letter-Latin-Upper-AE-OE : begin define [AHalfShape pShift df top fStraightBar slabKind] : begin local { subDf shift } : SubDfAndShift pShift df return : WithTransform [ApparentTranslate shift 0] - ALetterShape subDf top df.mvs fStraightBar slabKind + ALetterShape subDf fStraightBar slabKind top df.mvs define [AHalfShapeMask pShift df top fStraightBar slabKind] : begin local { subDf shift } : SubDfAndShift pShift df return : WithTransform [ApparentTranslate shift 0] - AMaskShape subDf top df.mvs fStraightBar + AMaskShape subDf fStraightBar top df.mvs define SLAB-NONE 0 define SLAB-TOP 1 diff --git a/font-src/glyphs/letter/latin/upper-a.ptl b/font-src/glyphs/letter/latin/upper-a.ptl index 9d031ca87..132b566fa 100644 --- a/font-src/glyphs/letter/latin/upper-a.ptl +++ b/font-src/glyphs/letter/latin/upper-a.ptl @@ -13,7 +13,6 @@ glyph-block Letter-Latin-Upper-A : begin glyph-block-import Letter-Shared : SetGrekUpperTonos CreateOgonekComposition glyph-block-import Letter-Shared-Shapes : SerifFrame glyph-block-import Letter-Latin-V : VShapeOutline VShape - glyph-block-export LambdaShape AMaskShape DeltaShape define SLAB-NONE 0 define SLAB-TOP 1 @@ -21,9 +20,9 @@ glyph-block Letter-Latin-Upper-A : begin define SLAB-RIGHT 4 glyph-block-export AMaskShape - define [AMaskShape df top sw barStraight] : new-glyph : glyph-proc - include : VShapeOutline df top sw barStraight - include : FlipAround ([DivFrame df.div].width / 2) (top / 2) + define [AMaskShape] : params [df fBarStraight top sw] : new-glyph : glyph-proc + include : VShapeOutline df fBarStraight top sw + include : FlipAround (df.width / 2) (top / 2) define [ABarPosition fBaseSlabs top] : mix [if fBaseSlabs Stroke 0] top (XH / 2 / CAP) @@ -48,12 +47,12 @@ glyph-block Letter-Latin-Upper-A : begin : else : HSerif.lt df.middle top [mix MidJutSide LongJut 0.5] sf.swSerif glyph-block-export ALetterShape - define [ALetterShape] : params [df top sw fStraightBar slabKind] : new-glyph : glyph-proc - include : VShape df top sw fStraightBar + define [ALetterShape] : params [df fStraightBar slabKind top sw] : new-glyph : glyph-proc + include : VShape df fStraightBar top sw include : FlipAround df.middle (top / 2) define yBar : ABarPosition [maskBits slabKind : bitOr SLAB-LEFT SLAB-RIGHT] top include : tagged 'crossBar' - intersection [HBar.t 0 df.width yBar] [AMaskShape df top sw fStraightBar] + intersection [HBar.t 0 df.width yBar] [AMaskShape df fStraightBar top sw] include : ASerifs df top sw slabKind foreach { suffix { fStraightBar slabKind } } [Object.entries AConfig] : do @@ -93,36 +92,51 @@ glyph-block Letter-Latin-Upper-A : begin turned 'turnA' 0x2C6F 'A' Middle (CAP / 2) # Lambda - define [LambdaShape] : params [df top sw barStraight [slab SLAB]] : glyph-proc - include : VShape df top sw barStraight + glyph-block-export LambdaShape + define [LambdaShape] : params [df fBarStraight top sw [slab SLAB]] : glyph-proc + include : VShape df fBarStraight top sw include : FlipAround df.middle (top / 2) local sf : SerifFrame.fromDf df top 0 include : NeedSlab slab : composite-proc sf.lb.full sf.rb.full create-glyph 'grek/Lambda.straight' : composite-proc [MarkSet.capital] - LambdaShape [DivFrame 1] CAP Stroke true + LambdaShape [DivFrame 1] true CAP Stroke create-glyph 'grek/Lambda.curly' : composite-proc [MarkSet.capital] - LambdaShape [DivFrame 1] CAP Stroke false + LambdaShape [DivFrame 1] false CAP Stroke create-glyph 'grek/smcpLambda.straight' : composite-proc [MarkSet.e] - LambdaShape [DivFrame 1] XH Stroke true + LambdaShape [DivFrame 1] true XH Stroke create-glyph 'grek/smcpLambda.curly' : composite-proc [MarkSet.e] - LambdaShape [DivFrame 1] XH Stroke false + LambdaShape [DivFrame 1] false XH Stroke select-variant 'grek/Lambda' 0x39B select-variant 'grek/smcpLambda' 0x1D27 (follow -- 'grek/Lambda') alias 'latinLambda' 0x245 'grek/Lambda' # Delta - define [DeltaShape df top sw barStraight] : union - LambdaShape df top sw barStraight (slab -- false) + glyph-block-export DeltaShape + define [DeltaShape] : params [df top sw fBarStraight] : union + LambdaShape + df -- df + fBarStraight -- fBarStraight + top -- top + sw -- sw + slab -- false intersection HBar.b 0 df.width 0 sw - AMaskShape df top sw barStraight + AMaskShape df fBarStraight top sw create-glyph 'grek/Delta.straight' : composite-proc [MarkSet.capital] - DeltaShape [DivFrame 1] CAP Stroke true + DeltaShape + df -- [DivFrame 1] + fBarStraight -- true + top -- CAP + sw -- Stroke create-glyph 'grek/Delta.curly' : composite-proc [MarkSet.capital] - DeltaShape [DivFrame 1] CAP Stroke false + DeltaShape + df -- [DivFrame 1] + fBarStraight -- false + top -- CAP + sw -- Stroke select-variant 'grek/Delta' 0x394 diff --git a/font-src/glyphs/letter/latin/upper-y.ptl b/font-src/glyphs/letter/latin/upper-y.ptl index 7ac7ec46c..5232fb3f9 100644 --- a/font-src/glyphs/letter/latin/upper-y.ptl +++ b/font-src/glyphs/letter/latin/upper-y.ptl @@ -37,11 +37,11 @@ glyph-block Letter-Latin-Upper-Y : begin local maskLT : slabType == SLAB-ALL || slabType == SLAB-MOTION local maskRT : slabType == SLAB-ALL - include : tagged 'strokeLT' : WithSerifOverflowMask maskLT CAP 0 SB RightSB + include : tagged 'strokeLT' : WithSerifOverflowMask maskLT top bot SB RightSB HalfXStrand bodyType SLAB SB top Middle cross 0.1 0.4 0.28 - include : tagged 'strokeRT' : WithSerifOverflowMask maskRT CAP 0 SB RightSB + include : tagged 'strokeRT' : WithSerifOverflowMask maskRT top bot SB RightSB HalfXStrand bodyType SLAB RightSB top Middle cross 0.1 0.4 0.28 - include : VBar.m Middle bot (cross + HalfStroke) + include : tagged 'strokeVMid' : VBar.m Middle bot (cross + HalfStroke) set-base-anchor 'overlay' Middle cross define [YenOverlayShape slabType] : glyph-proc diff --git a/font-src/glyphs/letter/latin/v.ptl b/font-src/glyphs/letter/latin/v.ptl index b086d909c..d3cc32acd 100644 --- a/font-src/glyphs/letter/latin/v.ptl +++ b/font-src/glyphs/letter/latin/v.ptl @@ -24,18 +24,18 @@ glyph-block Letter-Latin-V : begin define StraightSbShrink : mix 1 (DesignParameters.straightVShapeSbShrink * [StrokeWidthBlend 1 0.75]) : if SLAB 0.75 1 define [VShapeTopFlat top] : if SLAB [Math.min (top - Stroke) (top * 0.9)] (top * 0.9) - define [VShapeOutline] : params [df top [sw Stroke] barStraight] : glyph-proc + define [VShapeOutline] : params [df fBarStraight top [sw Stroke]] : glyph-proc define cornerHW : VCornerHalfWidth * sw / Stroke define dgCor : DiagCor top (Width / 2) 0 (sw * 2) define clearance : 0 - OX - local sbScale : if barStraight StraightSbShrink 1 + local sbScale : if fBarStraight StraightSbShrink 1 define vxStartL : df.leftSB * sbScale + clearance define vxEndL : df.middle - cornerHW + clearance define vxStartR : df.width - df.leftSB * sbScale - clearance define vxEndR : df.middle + cornerHW - clearance - if barStraight : do + if fBarStraight : do include : spiro-outline flat [mix vxStartL vxEndL 0] [mix top 0 0] curl [mix vxStartL vxEndL pInktrap] [mix top 0 pInktrap] @@ -54,25 +54,25 @@ glyph-block Letter-Latin-V : begin flat vxStartR [VShapeTopFlat top] curl vxStartR top - define [VBottomCapShape df barStraight sw] : begin + define [VBottomCapShape df fBarStraight sw] : begin define cornerHW : VCornerHalfWidth * sw / Stroke return : spiro-outline corner (df.middle + cornerHW) 0 corner (df.middle - cornerHW) 0 - corner df.middle [Math.min sw : if barStraight VShapeFineStraight VShapeFine] + corner df.middle [Math.min sw : if fBarStraight VShapeFineStraight VShapeFine] - define [VShape] : params [df top [sw Stroke] barStraight] : glyph-proc + define [VShape] : params [df fBarStraight top [sw Stroke]] : glyph-proc define cornerHW : VCornerHalfWidth * (sw / Stroke) - define fine : Math.min sw : [if barStraight VShapeFineStraight VShapeFine] * (sw / Stroke) + define fine : Math.min sw : [if fBarStraight VShapeFineStraight VShapeFine] * (sw / Stroke) define dgCor : DiagCor (2 * top) Width 0 (2 * sw) - local sbScale : if barStraight StraightSbShrink 1 + local sbScale : if fBarStraight StraightSbShrink 1 define vxStartL : df.leftSB * sbScale define vxEndL : df.middle - cornerHW define vxStartR : df.width - df.leftSB * sbScale define vxEndR : df.middle + cornerHW - if barStraight : do + if fBarStraight : do define midSW : dgCor * VShapeMiddleWidth / Stroke * sw include : tagged 'strokeDown' : dispiro widths.lhs (sw * dgCor) @@ -99,7 +99,7 @@ glyph-block Letter-Latin-V : begin g4 vxEndR 0 [widths.rhs fine] #bottom cap - include : VBottomCapShape df barStraight sw + include : VBottomCapShape df fBarStraight sw define [VCursiveShapeBarPos k] : mix SB RightSB k define [VCursiveShape] : params [k top [sw Stroke]] : glyph-proc @@ -125,10 +125,10 @@ glyph-block Letter-Latin-V : begin mix xArcMidBottom xArcRight 0.5 mix O yArcRight : archv.yFromX 0.5 2 - define [VHooktopShape df barStraight top] : glyph-proc - include : VShape df top Stroke barStraight + define [VHooktopShape df fBarStraight top] : glyph-proc + include : VShape df fBarStraight top Stroke eject-contour 'strokeUp' - include : VBottomCapShape df barStraight Stroke + include : VBottomCapShape df fBarStraight Stroke include : dispiro widths.rhs straight.left.start (RightSB + HookX / 3) (top - Stroke) @@ -136,14 +136,14 @@ glyph-block Letter-Latin-V : begin quadControls 0.4 0.75 64 unimportant g4 (Middle + VCornerHalfWidth) 0 [widths.rhs VShapeFine] - define [VSerifs df top barStraight] : begin - local sbScale : if barStraight StraightSbShrink 1 - local sbOffset : if barStraight (OX * [StrokeWidthBlend 1 2]) 0 + define [VSerifs df fBarStraight top] : begin + local sbScale : if fBarStraight StraightSbShrink 1 + local sbOffset : if fBarStraight (OX * [StrokeWidthBlend 1 2]) 0 local sf : SerifFrame top 0 (df.leftSB * sbScale - sbOffset) (df.width - df.leftSB * sbScale + sbOffset) return : NeedSlab SLAB : composite-proc sf.lt.full sf.rt.full - define [VMotionSerifs df top barStraight] : begin - local sbScale : if barStraight StraightSbShrink 1 - local sbOffset : if barStraight (OX * [StrokeWidthBlend 1 2]) 0 + define [VMotionSerifs df fBarStraight top] : begin + local sbScale : if fBarStraight StraightSbShrink 1 + local sbOffset : if fBarStraight (OX * [StrokeWidthBlend 1 2]) 0 local sf : SerifFrame top 0 (df.leftSB * sbScale - sbOffset) (df.width - df.leftSB * sbScale + sbOffset) return : composite-proc sf.lt.outer @@ -156,26 +156,47 @@ glyph-block Letter-Latin-V : begin foreach { suffix { Serifs fStraightBar }} [Object.entries VStandardConfig] : do create-glyph "V.\(suffix)" : glyph-proc include : MarkSet.capital - include : VShape [DivFrame 1] CAP Stroke fStraightBar - include : Serifs [DivFrame 1] CAP fStraightBar + include : VShape [DivFrame 1] fStraightBar CAP Stroke + include : Serifs [DivFrame 1] fStraightBar CAP create-glyph "v.\(suffix)" : glyph-proc include : MarkSet.e - include : VShape [DivFrame 1] XH Stroke fStraightBar - include : Serifs [DivFrame 1] XH fStraightBar + include : VShape [DivFrame 1] fStraightBar XH Stroke + include : Serifs [DivFrame 1] fStraightBar XH create-glyph "VHookTop.\(suffix)" : glyph-proc include : MarkSet.capital include : VHooktopShape [DivFrame 1] fStraightBar CAP - include : Serifs [DivFrame 1] CAP fStraightBar + include : Serifs [DivFrame 1] fStraightBar CAP eject-contour 'serifRT' create-glyph "vHookTop.\(suffix)" : glyph-proc include : MarkSet.e include : VHooktopShape [DivFrame 1] fStraightBar XH - include : Serifs [DivFrame 1] XH fStraightBar + include : Serifs [DivFrame 1] fStraightBar XH eject-contour 'serifRT' + create-glyph "cyrl/Uk.\(suffix)" : glyph-proc + include : MarkSet.capital + local vPartHeight : CAP * 0.45 + HalfStroke + include : WithTransform [ApparentTranslate 0 (CAP - vPartHeight)] : glyph-proc + include : VHooktopShape [DivFrame 1] fStraightBar vPartHeight + include : Serifs [DivFrame 1] fStraightBar vPartHeight + eject-contour 'serifRT' + + local oHeight : CAP - vPartHeight + Stroke + O + include : OShape oHeight 0 SB RightSB [AdviceStroke 2.75] + include : VBar.m Middle (0.5 * oHeight) oHeight [AdviceStroke 4] + + create-glyph "cyrl/ukUnblended.\(suffix)" : glyph-proc + include : MarkSet.e + local vPartHeight : Ascender * 0.45 + HalfStroke + include : WithTransform [ApparentTranslate 0 (Ascender - vPartHeight)] : glyph-proc + include : VHooktopShape [DivFrame 1] fStraightBar vPartHeight + include : Serifs [DivFrame 1] fStraightBar vPartHeight + eject-contour 'serifRT' + include : OShape (Ascender - vPartHeight + Stroke + O) 0 SB RightSB + create-glyph "vPalatalHook.\(suffix)" : glyph-proc include [refer-glyph "v.\(suffix)"] AS_BASE ALSO_METRICS include : PalatalHook.r @@ -214,7 +235,10 @@ glyph-block Letter-Latin-V : begin select-variant "vPalatalHook" 0x1D8C (follow -- 'v') select-variant 'vHookTop' 0x2C71 (follow -- 'v/nonCursive') + select-variant 'cyrl/ukUnblended' 0x1C88 (follow -- 'v/nonCursive') + select-variant 'cyrl/Izhitsa' 0x474 (follow -- 'VHookTop') (shapeFrom -- 'VHookTop') + select-variant 'cyrl/Uk' 0xA64A (follow -- 'VHookTop') alias 'cyrl/izhitsa' 0x475 'vHookTop' diff --git a/font-src/glyphs/symbol/math/letter-like.ptl b/font-src/glyphs/symbol/math/letter-like.ptl index 18fd2aa75..4926b5c4c 100644 --- a/font-src/glyphs/symbol/math/letter-like.ptl +++ b/font-src/glyphs/symbol/math/letter-like.ptl @@ -7,7 +7,7 @@ glyph-module glyph-block Symbol-Math-Letter-Like : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives - glyph-block-import Letter-Latin-Upper-A : LambdaShape AMaskShape DeltaShape + glyph-block-import Letter-Latin-Upper-A : DeltaShape glyph-block-import Letter-Latin-Upper-E : RevEShape turned 'forall' 0x2200 'A.straightSerifless' Middle (CAP / 2) @@ -27,18 +27,30 @@ glyph-block Symbol-Math-Letter-Like : begin create-glyph 'increment' [CodeNonApl 0x2206] : glyph-proc include : MarkSet.capital - include : DeltaShape [DivFrame 1] CAP OperatorStroke true + include : DeltaShape + df -- [DivFrame 1] + fBarStraight -- true + top -- CAP + sw -- OperatorStroke create-glyph 'increment.aplForm' [CodeApl 0x2206] : glyph-proc include : MarkSet.oper define shapeHeight : OperTop - OperBot - include : DeltaShape [DivFrame 1] shapeHeight OperatorStroke true + include : DeltaShape + df -- [DivFrame 1] + fBarStraight -- true + top -- shapeHeight + sw -- OperatorStroke include : ApparentTranslate 0 (SymbolMid - shapeHeight / 2) create-glyph 'increment.aplThin' : glyph-proc include : MarkSet.oper define shapeHeight : OperTop - OperBot - include : DeltaShape [DivFrame 1] shapeHeight [AdviceStroke 3.75] true + include : DeltaShape + df -- [DivFrame 1] + fBarStraight -- true + top -- shapeHeight + sw -- [AdviceStroke 3.75] include : ApparentTranslate 0 (SymbolMid - shapeHeight / 2) turned 'nabla' [CodeNonApl 0x2207] 'increment' Middle (CAP / 2)