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).
This commit is contained in:
be5invis 2023-05-13 01:47:43 -07:00
parent 27c894be11
commit 2874d1ad86
11 changed files with 168 additions and 64 deletions

View file

@ -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

4
changes/22.1.3.md Normal file
View file

@ -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).

View file

@ -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"

View file

@ -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

View file

@ -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]

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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'

View file

@ -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)