Add five letters with palatal hook. (#2328)
* Add five letters with palatal hook. * fix EngHook sw * Actually fix EngHook sw
This commit is contained in:
parent
5af4b5120b
commit
942c149a27
7 changed files with 108 additions and 53 deletions
|
@ -1,4 +1,6 @@
|
|||
* Add characters:
|
||||
- LATIN SMALL LETTER L WITH BELT AND PALATAL HOOK (`U+1DF13`) ... LATIN SMALL LETTER R WITH FISHHOOK AND PALATAL HOOK (`U+1DF16`).
|
||||
- LATIN SMALL LETTER EZH WITH PALATAL HOOK (`U+1DF18`).
|
||||
- LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK (`U+1DF1A`).
|
||||
- LATIN SMALL LETTER O WITH RETROFLEX HOOK (`U+1DF1B`).
|
||||
- LATIN SMALL LETTER C WITH RETROFLEX HOOK (`U+1DF1D`).
|
||||
|
|
|
@ -8,67 +8,68 @@ glyph-module
|
|||
glyph-block Letter-Latin-Ezh : begin
|
||||
glyph-block-import CommonShapes
|
||||
glyph-block-import Common-Derivatives
|
||||
glyph-block-import Letter-Shared-Shapes : CurlyTail SerifedArcEnd RetroflexHook
|
||||
glyph-block-import Letter-Shared-Shapes : CurlyTail SerifedArcEnd PalatalHook RetroflexHook
|
||||
|
||||
define [StdTerminalShape top bot yMidBar] : begin
|
||||
define [StdTerminalShape df top bot yMidBar sw] : begin
|
||||
local hookDepth : Hook * (top - bot) / [fallback para.cap0 CAP]
|
||||
local pArc : SmallArchDepthB / (SmallArchDepthA + SmallArchDepthB)
|
||||
list
|
||||
g4 (RightSB - OX) [mix yMidBar bot pArc]
|
||||
g4 (df.rightSB - OX) [mix yMidBar bot pArc]
|
||||
hookend bot
|
||||
g4 SB (bot + hookDepth)
|
||||
g4 df.leftSB (bot + hookDepth)
|
||||
|
||||
define [HooklessTerminalShape p] : function [top bot yMidBar] : list
|
||||
g4.down.mid (RightSB - OX) [mix yMidBar bot p] [heading Downward]
|
||||
define [HooklessTerminalShape p] : function [df top bot yMidBar sw] : list
|
||||
g4.down.mid (df.rightSB - OX) [mix yMidBar bot p] [heading Downward]
|
||||
|
||||
define [RetroflexConnectionTerminal top bot yMidBar] : begin
|
||||
define [RetroflexConnectionTerminal df top bot yMidBar sw] : begin
|
||||
local hookDepth : Hook * (top - bot) / [fallback para.cap0 CAP]
|
||||
local pArc : SmallArchDepthB / (SmallArchDepthA + SmallArchDepthB)
|
||||
list
|
||||
g4 (RightSB - OX) [mix yMidBar bot pArc]
|
||||
SerifedArcEnd.RtlRhs SB Middle bot Stroke hookDepth
|
||||
g4 (df.rightSB - OX) [mix yMidBar bot pArc]
|
||||
SerifedArcEnd.RtlRhs df.leftSB df.middle bot sw hookDepth
|
||||
|
||||
define [ConventionalStart top bot ezhLeft ezhRight yMidBar] : glyph-proc
|
||||
include : HBar.t SB ezhRight top
|
||||
define [ConventionalStart df top bot ezhLeft ezhRight yMidBar sw] : glyph-proc
|
||||
include : HBar.t df.leftSB ezhRight top sw
|
||||
include : dispiro
|
||||
corner ezhRight (top - Stroke) [widths.rhs (Stroke / HVContrast)]
|
||||
corner ezhLeft yMidBar [widths.lhs (Stroke / HVContrast)]
|
||||
corner ezhRight (top - sw) [widths.rhs (sw / HVContrast)]
|
||||
corner ezhLeft yMidBar [widths.lhs (sw / HVContrast)]
|
||||
|
||||
define [CurisveStart top bot ezhLeft ezhRight yMidBar] : glyph-proc
|
||||
define hookTerminalWidth : AdviceStroke 3.5
|
||||
define xDiagWidth : 1 * Stroke
|
||||
define yFootHeight : [Math.max (0.15 * (top - bot)) (Stroke * 0.625)] + 0.4 * Stroke
|
||||
define yHookDepth : Hook + Stroke * 0.25
|
||||
define yHookStraightDepth : Math.min (yHookDepth - Stroke * 1.1) (yHookDepth / 3 - Stroke / 4)
|
||||
define xHookDepth : Math.max (0.25 * (RightSB - SB)) (hookTerminalWidth * 1.5)
|
||||
define xMockTailDepth : Math.max (0.375 * (RightSB - SB)) (hookTerminalWidth * 1.375)
|
||||
define [CurisveStart df top bot ezhLeft ezhRight yMidBar sw] : glyph-proc
|
||||
define hookTerminalWidth : [AdviceStroke 3.5] / Stroke * sw
|
||||
define xDiagWidth : 1 * sw
|
||||
define yFootHeight : [Math.max (0.15 * (top - bot)) (sw * 0.625)] + 0.4 * sw
|
||||
define yHookDepth : Hook + sw * 0.25
|
||||
define yHookStraightDepth : Math.min (yHookDepth - sw * 1.1) (yHookDepth / 3 - sw / 4)
|
||||
define xHookDepth : Math.max (0.25 * (df.rightSB - df.leftSB)) (hookTerminalWidth * 1.5)
|
||||
define xMockTailDepth : Math.max (0.375 * (df.rightSB - df.leftSB)) (hookTerminalWidth * 1.375)
|
||||
define kTop 0.625
|
||||
define kBot 0.625
|
||||
define yTailDepth : Hook * 0.5
|
||||
|
||||
include : tagged 'strokeTop' : intersection
|
||||
spiro-outline
|
||||
corner (-Width) bot
|
||||
corner (-Width) (2 * top)
|
||||
corner (-df.width) bot
|
||||
corner (-df.width) (2 * top)
|
||||
corner (ezhRight - xDiagWidth + 0.1) (2 * top)
|
||||
corner (ezhRight - xDiagWidth + 0.1) (top - yFootHeight)
|
||||
corner (ezhLeft + xDiagWidth) yMidBar
|
||||
corner (ezhLeft + xDiagWidth) bot
|
||||
dispiro
|
||||
flat (SB + OX) (top - yHookDepth) [widths.rhs.heading hookTerminalWidth Upward]
|
||||
curl (SB + OX) (top - yHookDepth + yHookStraightDepth) [heading Upward]
|
||||
flat (df.leftSB + OX) (top - yHookDepth) [widths.rhs.heading hookTerminalWidth Upward]
|
||||
curl (df.leftSB + OX) (top - yHookDepth + yHookStraightDepth) [heading Upward]
|
||||
arcvh
|
||||
g2.right.mid (SB + xHookDepth) (top - O) [widths.rhs.heading Stroke Rightward]
|
||||
flat [mix (SB + xMockTailDepth) ezhRight kTop] (top - kTop * yTailDepth)
|
||||
curl [mix (SB + xMockTailDepth) ezhRight 4] (top - 4 * yTailDepth)
|
||||
g2.right.mid (df.leftSB + xHookDepth) (top - O) [widths.rhs.heading sw Rightward]
|
||||
flat [mix (df.leftSB + xMockTailDepth) ezhRight kTop] (top - kTop * yTailDepth)
|
||||
curl [mix (df.leftSB + xMockTailDepth) ezhRight 4] (top - 4 * yTailDepth)
|
||||
|
||||
include : VBar.r ezhRight top (top - yFootHeight) (xDiagWidth / HVContrast)
|
||||
include : dispiro
|
||||
corner ezhRight (top - yFootHeight) [widths.rhs (Stroke / HVContrast)]
|
||||
corner ezhLeft yMidBar [widths.lhs (Stroke / HVContrast)]
|
||||
corner ezhRight (top - yFootHeight) [widths.rhs (sw / HVContrast)]
|
||||
corner ezhLeft yMidBar [widths.lhs (sw / HVContrast)]
|
||||
|
||||
glyph-block-export EzhShape
|
||||
define flex-params [EzhShape] : glyph-proc
|
||||
local-parameter : df
|
||||
local-parameter : top
|
||||
local-parameter : bot
|
||||
local-parameter : pLeft -- 0.2
|
||||
|
@ -76,23 +77,24 @@ glyph-block Letter-Latin-Ezh : begin
|
|||
local-parameter : terminalShape -- StdTerminalShape
|
||||
local-parameter : isCursive -- false
|
||||
local-parameter : isSerifed -- SLAB
|
||||
local-parameter : sw -- Stroke
|
||||
|
||||
local yMidBar : [mix bot top [if isCursive 0.5 0.55]] + HalfStroke
|
||||
local ezhLeft : mix SB RightSB pLeft
|
||||
local ezhRight : mix SB RightSB pRight
|
||||
local yMidBar : [mix bot top [if isCursive 0.5 0.55]] + 0.5 * sw
|
||||
local ezhLeft : mix df.leftSB df.rightSB pLeft
|
||||
local ezhRight : mix df.leftSB df.rightSB pRight
|
||||
|
||||
include : union
|
||||
if isCursive
|
||||
CurisveStart top bot ezhLeft ezhRight yMidBar
|
||||
ConventionalStart top bot ezhLeft ezhRight yMidBar
|
||||
CurisveStart df top bot ezhLeft ezhRight yMidBar sw
|
||||
ConventionalStart df top bot ezhLeft ezhRight yMidBar sw
|
||||
dispiro
|
||||
widths.rhs
|
||||
widths.rhs sw
|
||||
flat ezhLeft yMidBar [heading Rightward]
|
||||
curl (Middle - CorrectionOMidS) yMidBar
|
||||
curl (df.middle - CorrectionOMidS) yMidBar
|
||||
archv
|
||||
terminalShape top bot yMidBar
|
||||
terminalShape df top bot yMidBar sw
|
||||
|
||||
if isSerifed : include : VSerif.dl SB top VJut
|
||||
if isSerifed : include : VSerif.dl df.leftSB top VJut (sw / Stroke * VJutStroke)
|
||||
|
||||
return : object yMidBar
|
||||
|
||||
|
@ -104,20 +106,20 @@ glyph-block Letter-Latin-Ezh : begin
|
|||
foreach { suffix { isCursive isSerifed } } [pairs-of EzhConfig] : do
|
||||
create-glyph "Ezh.\(suffix)" : glyph-proc
|
||||
include : MarkSet.capital
|
||||
include : EzhShape CAP 0 (isCursive -- isCursive) (isSerifed -- isSerifed)
|
||||
include : EzhShape [DivFrame 1] CAP 0 (isCursive -- isCursive) (isSerifed -- isSerifed)
|
||||
|
||||
create-glyph "smcpEzh.\(suffix)" : glyph-proc
|
||||
include : MarkSet.e
|
||||
include : EzhShape XH 0 (isCursive -- isCursive) (isSerifed -- isSerifed)
|
||||
include : EzhShape [DivFrame 1] XH 0 (isCursive -- isCursive) (isSerifed -- isSerifed)
|
||||
|
||||
create-glyph "ezh.\(suffix)" : glyph-proc
|
||||
include : MarkSet.p
|
||||
include : EzhShape XH Descender (isCursive -- isCursive) (isSerifed -- isSerifed)
|
||||
include : EzhShape [DivFrame 1] XH Descender (isCursive -- isCursive) (isSerifed -- isSerifed)
|
||||
|
||||
create-glyph "ezhTail.\(suffix)" : glyph-proc
|
||||
include : MarkSet.p
|
||||
local b : mix Descender XH 0.25
|
||||
local [object yMidBar] : include : EzhShape XH b
|
||||
local [object yMidBar] : include : EzhShape [DivFrame 1] XH b
|
||||
isCursive -- isCursive
|
||||
isSerifed -- isSerifed
|
||||
terminalShape -- [HooklessTerminalShape 0.5]
|
||||
|
@ -137,7 +139,7 @@ glyph-block Letter-Latin-Ezh : begin
|
|||
create-glyph "ezhCurlyTail.\(suffix)" : glyph-proc
|
||||
include : MarkSet.p
|
||||
local p : SmallArchDepthB / (SmallArchDepthA + SmallArchDepthB)
|
||||
local [object yMidBar] : include : EzhShape XH Descender
|
||||
local [object yMidBar] : include : EzhShape [DivFrame 1] XH Descender
|
||||
isCursive -- isCursive
|
||||
isSerifed -- isSerifed
|
||||
terminalShape -- [HooklessTerminalShape p]
|
||||
|
@ -153,12 +155,28 @@ glyph-block Letter-Latin-Ezh : begin
|
|||
|
||||
create-glyph "ezhRetroflexHook.\(suffix)" : glyph-proc
|
||||
include : MarkSet.p
|
||||
include : EzhShape XH 0
|
||||
include : EzhShape [DivFrame 1] XH 0
|
||||
isCursive -- isCursive
|
||||
isSerifed -- isSerifed
|
||||
terminalShape -- RetroflexConnectionTerminal
|
||||
include : RetroflexHook.l SB 0 (yAttach -- Hook)
|
||||
|
||||
create-glyph "ezhPalatalHook.\(suffix)" : glyph-proc
|
||||
local df : include : DivFrame para.diversityM 1
|
||||
include : df.markSet.p
|
||||
local dfSub : DivFrame (0.75 * para.diversityM) 2
|
||||
local p : SmallArchDepthB / (SmallArchDepthA + SmallArchDepthB)
|
||||
local [object yMidBar] : include : EzhShape dfSub XH Descender
|
||||
isCursive -- isCursive
|
||||
isSerifed -- isSerifed
|
||||
sw -- dfSub.mvs
|
||||
local y : [mix yMidBar Descender p] - 0.5 * dfSub.mvs
|
||||
include : PalatalHook.r
|
||||
x -- df.rightSB
|
||||
y -- y
|
||||
xLink -- dfSub.rightSB
|
||||
refSw -- dfSub.mvs
|
||||
maskOut -- [intersection [MaskBelow y] [MaskLeft dfSub.rightSB]]
|
||||
|
||||
select-variant 'Ezh' 0x1B7
|
||||
select-variant 'smcpEzh' 0x1D23 (follow -- 'Ezh')
|
||||
|
@ -166,14 +184,15 @@ glyph-block Letter-Latin-Ezh : begin
|
|||
select-variant 'ezhTail' 0x1BA (follow -- 'ezh')
|
||||
select-variant 'ezhCurlyTail' 0x293 (follow -- 'ezh')
|
||||
select-variant 'ezhRetroflexHook' 0x1D9A (follow -- 'ezh')
|
||||
select-variant 'ezhPalatalHook' 0x1DF18 (follow -- 'ezh')
|
||||
|
||||
alias 'cyrl/Ezh' 0x4E0 'Ezh'
|
||||
alias 'cyrl/ezh' 0x4E1 'ezh'
|
||||
alias 'cyrl/abk/Dze' 0x4E0 'Ezh'
|
||||
alias 'cyrl/abk/dze' 0x4E1 'ezh'
|
||||
|
||||
# Variants for Ezh doesn't make sense for Lyogh.
|
||||
create-glyph 'lyogh.serifless' : glyph-proc
|
||||
include : MarkSet.bp
|
||||
include : EzhShape XH Descender 0.4
|
||||
include : EzhShape [DivFrame 1] XH Descender 0.4
|
||||
include : VBar.l SB (XH * 0.1) Ascender
|
||||
|
||||
create-glyph 'lyogh.hooky' : glyph-proc
|
||||
|
@ -184,7 +203,7 @@ glyph-block Letter-Latin-Ezh : begin
|
|||
|
||||
create-glyph 'lyoghRTail.serifless' : glyph-proc
|
||||
include : MarkSet.b
|
||||
include : EzhShape XH 0 0.4
|
||||
include : EzhShape [DivFrame 1] XH 0 0.4
|
||||
include : VBar.l SB 0 Ascender
|
||||
include : RetroflexHook.lExt SB 0
|
||||
|
||||
|
|
|
@ -344,6 +344,7 @@ glyph-block Letter-Latin-Lower-I : begin
|
|||
select-variant 'lRTail' 0x26D (follow -- 'l/reduced/rtail')
|
||||
select-variant 'llWelsh' 0x1EFB (follow -- 'l')
|
||||
select-variant 'lPalatalHook' 0x1D85 (follow -- 'l')
|
||||
select-variant 'lPalatalHook/decompress' (shapeFrom -- 'lPalatalHook') (follow -- 'l/reduced/decompress')
|
||||
select-variant 'lHighBar' 0xA749 (follow -- 'l')
|
||||
|
||||
derive-composites 'lTildeOver' 0x26B 'l/reduced/decompress' 'tildeOver'
|
||||
|
@ -356,6 +357,7 @@ glyph-block Letter-Latin-Lower-I : begin
|
|||
include : BeltOverlay.at 0 0
|
||||
derive-composites 'lBelt' 0x26C 'l/reduced/decompress' 'lBeltOverlay'
|
||||
derive-composites 'lBeltRTail' 0xA78E 'lRTail/decompress' 'lBeltOverlay'
|
||||
derive-composites 'lBeltPalatalHook' 0x1DF13 'lPalatalHook/decompress' 'lBeltOverlay'
|
||||
|
||||
derive-composites 'lDot' 0x140 'lDotBase' 'LDotDot'
|
||||
|
||||
|
|
|
@ -219,6 +219,21 @@ glyph-block Letter-Latin-Lower-N : begin
|
|||
if sLT : include : sLT [DivFrame 1] XH
|
||||
if sLB : include : sLB [DivFrame 1] 0
|
||||
|
||||
if (!tailed) : create-glyph "engPalatalHook.\(suffix)" : glyph-proc
|
||||
local df : include : DivFrame para.diversityM 1
|
||||
include : df.markSet.p
|
||||
local dfSub : DivFrame (0.75 * para.diversityM) 2
|
||||
include : Body XH dfSub.leftSB dfSub.rightSB 0 dfSub.mvs
|
||||
include : EngHook dfSub.rightSB 0 Descender (sw -- dfSub.mvs)
|
||||
if sLT : include : sLT dfSub XH
|
||||
if sLB : include : sLB dfSub 0
|
||||
include : PalatalHook.r
|
||||
x -- df.rightSB
|
||||
y -- 0
|
||||
xLink -- dfSub.rightSB
|
||||
refSw -- dfSub.mvs
|
||||
maskOut -- [intersection [MaskBelow 0] [MaskLeft dfSub.rightSB]]
|
||||
|
||||
if (!tailed && !sRB) : create-glyph "RInsular.\(suffix)" : glyph-proc
|
||||
include : MarkSet.capDesc
|
||||
include : LeaningAnchor.Below.VBar.l SB
|
||||
|
@ -273,6 +288,7 @@ glyph-block Letter-Latin-Lower-N : begin
|
|||
select-variant 'nCurlyTail' 0x235 (follow -- 'eng')
|
||||
select-variant 'nCrossedTail' 0xAB3B (follow -- 'eng')
|
||||
select-variant 'engCrossedTail' 0xAB3C (follow -- 'eng')
|
||||
select-variant 'engPalatalHook' 0x1DF14 (follow -- 'eng')
|
||||
|
||||
select-variant 'RInsular' 0xA782 (follow -- 'eng/lTailBase')
|
||||
select-variant 'rInsular' 0xA783 (follow -- 'eng/lTailBase')
|
||||
|
|
|
@ -266,6 +266,18 @@ glyph-block Letter-Latin-Lower-R : begin
|
|||
include : setTurnedMarks doTS XH 0
|
||||
include : RetroflexHook.lExt (df.rightSB - xBar + df.leftSB) 0
|
||||
|
||||
create-glyph "rTurnPalatalHook.\(suffix)" : glyph-proc
|
||||
include [refer-glyph "r.\(suffix)"] AS_BASE ALSO_METRICS
|
||||
eject-contour 'serifLT'
|
||||
include : FlipAround df.middle (XH / 2)
|
||||
include : df.markSet.e
|
||||
define [object xBar setTurnedMarks] : RDim df mode
|
||||
include : setTurnedMarks doTS XH 0
|
||||
include : PalatalHook.r
|
||||
xLink -- (df.rightSB - xBar + df.leftSB)
|
||||
x -- (df.rightSB + SideJut)
|
||||
y -- 0
|
||||
|
||||
create-glyph "turnrLongLeg.\(suffix)" : glyph-proc
|
||||
include [refer-glyph "rLongLeg.\(suffix)"] AS_BASE ALSO_METRICS
|
||||
include : FlipAround df.middle (XH / 2)
|
||||
|
@ -328,3 +340,6 @@ glyph-block Letter-Latin-Lower-R : begin
|
|||
|
||||
select-variant 'rFlap' 0x27E (shapeFrom -- 'r')
|
||||
CreateAccentedComposition 'rFlapTildeOver' 0x1D73 'rFlap' 'tildeOver'
|
||||
|
||||
select-variant 'rTurnPalatalHook' 0x1DF15 (follow -- 'rTurnRTail')
|
||||
select-variant 'rFlapPalatalHook' 0x1DF16 (shapeFrom -- 'rPalatalHook') (follow -- 'rFlap')
|
||||
|
|
|
@ -988,6 +988,7 @@ glyph-block Letter-Shared-Shapes : begin
|
|||
define [EngHook] : with-params [x yStart yEnd [sw Stroke]] : begin
|
||||
return : VerticalHook.r x (yEnd + Hook + 0.5 * sw) (-HookX) Hook
|
||||
yExtension -- [Math.max 0 (yStart - (yEnd + Hook + 0.5 * sw))]
|
||||
sw -- sw
|
||||
|
||||
# Upward hook shape
|
||||
glyph-block-export TopHook
|
||||
|
|
|
@ -38,21 +38,21 @@ glyph-block Digits-Three : begin
|
|||
include : ThreeShape CAP
|
||||
create-glyph 'three.lnum.flatTopSerifless' : glyph-proc
|
||||
include : MarkSet.capital
|
||||
include : EzhShape CAP 0 (pLeft -- 0.25) (pRight -- 0.975) (isSerifed -- false)
|
||||
include : EzhShape [DivFrame 1] CAP 0 (pLeft -- 0.25) (pRight -- 0.975) (isSerifed -- false)
|
||||
create-glyph 'three.lnum.flatTopSerifed' : glyph-proc
|
||||
include : MarkSet.capital
|
||||
include : EzhShape CAP 0 (pLeft -- 0.25) (pRight -- 0.975) (isSerifed -- true)
|
||||
include : EzhShape [DivFrame 1] CAP 0 (pLeft -- 0.25) (pRight -- 0.975) (isSerifed -- true)
|
||||
create-glyph 'three.onum.twoArcs' : glyph-proc
|
||||
include : OnumMarks.p
|
||||
include : ThreeShape CAP
|
||||
include : ShiftDown
|
||||
create-glyph 'three.onum.flatTopSerifless' : glyph-proc
|
||||
include : OnumMarks.p
|
||||
include : EzhShape CAP 0 (pLeft -- 0.25) (pRight -- 0.975) (isSerifed -- false)
|
||||
include : EzhShape [DivFrame 1] CAP 0 (pLeft -- 0.25) (pRight -- 0.975) (isSerifed -- false)
|
||||
include : ShiftDown
|
||||
create-glyph 'three.onum.flatTopSerifed' : glyph-proc
|
||||
include : OnumMarks.p
|
||||
include : EzhShape CAP 0 (pLeft -- 0.25) (pRight -- 0.975) (isSerifed -- true)
|
||||
include : EzhShape [DivFrame 1] CAP 0 (pLeft -- 0.25) (pRight -- 0.975) (isSerifed -- true)
|
||||
include : ShiftDown
|
||||
|
||||
select-variant 'three.lnum' [CodeLnum '3'] (follow -- 'three')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue