Fix shape of LATIN SMALL LETTER E WITH OGONEK (U+0119
) (#1427).
This commit is contained in:
parent
a4d0240b8f
commit
92bfbaa2d3
16 changed files with 187 additions and 98 deletions
1
changes/16.3.1.md
Normal file
1
changes/16.3.1.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
* Fix shape of LATIN SMALL LETTER E WITH OGONEK (`U+0119`) (#1427).
|
|
@ -9,7 +9,7 @@ glyph-block Letter-Latin-Lower-A : begin
|
||||||
glyph-block-import CommonShapes
|
glyph-block-import CommonShapes
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
glyph-block-import Mark-Shared-Metrics : markHalfStroke
|
glyph-block-import Mark-Shared-Metrics : markHalfStroke
|
||||||
glyph-block-import Letter-Shared : CreateAccentedComposition
|
glyph-block-import Letter-Shared : CreateAccentedComposition CreateOgonekComposition
|
||||||
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar DToothlessRise DMBlend
|
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar DToothlessRise DMBlend
|
||||||
|
|
||||||
define ADoubleStoreyStroke : AdviceStroke2 2 3 XH
|
define ADoubleStoreyStroke : AdviceStroke2 2 3 XH
|
||||||
|
@ -70,14 +70,14 @@ glyph-block Letter-Latin-Lower-A : begin
|
||||||
|
|
||||||
create-glyph 'a.doubleStoreySerifless' : glyph-proc
|
create-glyph 'a.doubleStoreySerifless' : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
set-base-anchor 'trailing' RightSB 0
|
||||||
include : union
|
include : union
|
||||||
ADoubleStoreyHookAndBar 0
|
ADoubleStoreyHookAndBar 0
|
||||||
ADoubleStoreyArc 0
|
ADoubleStoreyArc 0
|
||||||
|
|
||||||
create-glyph 'a.doubleStoreySerifed' : glyph-proc
|
create-glyph 'a.doubleStoreySerifed' : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
set-base-anchor 'trailing' (RightSB + SideJut) 0
|
||||||
include : union
|
include : union
|
||||||
ADoubleStoreyHookAndBar 0
|
ADoubleStoreyHookAndBar 0
|
||||||
ADoubleStoreyArc 0
|
ADoubleStoreyArc 0
|
||||||
|
@ -101,7 +101,7 @@ glyph-block Letter-Latin-Lower-A : begin
|
||||||
|
|
||||||
create-glyph 'a.doubleStoreyTailed' : glyph-proc
|
create-glyph 'a.doubleStoreyTailed' : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
set-base-anchor 'trailing' (RightSB + SideJut) 0
|
||||||
include : union
|
include : union
|
||||||
ADoubleStoreyHookAndBar (XH - ADoubleStoreySmoothB + O)
|
ADoubleStoreyHookAndBar (XH - ADoubleStoreySmoothB + O)
|
||||||
ADoubleStoreyArc 0
|
ADoubleStoreyArc 0
|
||||||
|
@ -109,47 +109,47 @@ glyph-block Letter-Latin-Lower-A : begin
|
||||||
|
|
||||||
create-glyph 'a.doubleStoreyToothlessCorner' : glyph-proc
|
create-glyph 'a.doubleStoreyToothlessCorner' : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
# set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
||||||
include : union
|
include : union
|
||||||
ADoubleStoreyHookAndBar DToothlessRise
|
ADoubleStoreyHookAndBar DToothlessRise
|
||||||
ADoubleStoreyArc 1 DToothlessRise
|
ADoubleStoreyArc 1 DToothlessRise
|
||||||
|
|
||||||
create-glyph 'a.doubleStoreyToothlessRounded' : glyph-proc
|
create-glyph 'a.doubleStoreyToothlessRounded' : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
# set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
||||||
include : union
|
include : union
|
||||||
ADoubleStoreyHookAndBar ADoubleStoreySmoothA
|
ADoubleStoreyHookAndBar ADoubleStoreySmoothA
|
||||||
ADoubleStoreyArc 2 ADoubleStoreySmoothA
|
ADoubleStoreyArc 2 ADoubleStoreySmoothA
|
||||||
|
|
||||||
create-glyph 'a.singleStoreySerifless' : glyph-proc
|
create-glyph 'a.singleStoreySerifless' : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
set-base-anchor 'trailing' RightSB 0
|
||||||
include : OBarRightShape
|
include : OBarRightShape
|
||||||
include : VBarRight RightSB 0 XH
|
include : VBarRight RightSB 0 XH
|
||||||
|
|
||||||
create-glyph 'a.singleStoreySerifed' : glyph-proc
|
create-glyph 'a.singleStoreySerifed' : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
set-base-anchor 'trailing' (RightSB + SideJut) 0
|
||||||
include : OBarRightShape
|
include : OBarRightShape
|
||||||
include : VBarRight RightSB 0 XH
|
include : VBarRight RightSB 0 XH
|
||||||
include : tagged 'serifRB' : RightwardBottomSerif RightSB 0 SideJut
|
include : tagged 'serifRB' : RightwardBottomSerif RightSB 0 SideJut
|
||||||
|
|
||||||
create-glyph 'a.singleStoreyTailed' : glyph-proc
|
create-glyph 'a.singleStoreyTailed' : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
set-base-anchor 'trailing' (RightSB + SideJut) 0
|
||||||
include : OBarRightShape
|
include : OBarRightShape
|
||||||
include : RightwardTailedBar RightSB 0 XH
|
include : RightwardTailedBar RightSB 0 XH
|
||||||
|
|
||||||
create-glyph 'a.singleStoreyEarlessCornerSerifless' : glyph-proc
|
create-glyph 'a.singleStoreyEarlessCornerSerifless' : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
set-base-anchor 'trailing' RightSB 0
|
||||||
include : OBarLeftToothlessShape XH SB DToothlessRise DMBlend
|
include : OBarLeftToothlessShape XH SB DToothlessRise DMBlend
|
||||||
include : FlipAround Middle (XH / 2)
|
include : FlipAround Middle (XH / 2)
|
||||||
include : VBarRight RightSB 0 (XH - DToothlessRise)
|
include : VBarRight RightSB 0 (XH - DToothlessRise)
|
||||||
|
|
||||||
create-glyph 'a.singleStoreyEarlessCornerSerifed' : glyph-proc
|
create-glyph 'a.singleStoreyEarlessCornerSerifed' : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
set-base-anchor 'trailing' (RightSB + SideJut) 0
|
||||||
include : OBarLeftToothlessShape XH SB DToothlessRise DMBlend
|
include : OBarLeftToothlessShape XH SB DToothlessRise DMBlend
|
||||||
include : FlipAround Middle (XH / 2)
|
include : FlipAround Middle (XH / 2)
|
||||||
include : VBarRight RightSB 0 (XH - DToothlessRise)
|
include : VBarRight RightSB 0 (XH - DToothlessRise)
|
||||||
|
@ -157,27 +157,27 @@ glyph-block Letter-Latin-Lower-A : begin
|
||||||
|
|
||||||
create-glyph 'a.singleStoreyEarlessCornerTailed' : glyph-proc
|
create-glyph 'a.singleStoreyEarlessCornerTailed' : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
set-base-anchor 'trailing' (RightSB + SideJut) 0
|
||||||
include : OBarLeftToothlessShape XH SB DToothlessRise DMBlend
|
include : OBarLeftToothlessShape XH SB DToothlessRise DMBlend
|
||||||
include : FlipAround Middle (XH / 2)
|
include : FlipAround Middle (XH / 2)
|
||||||
include : RightwardTailedBar RightSB 0 (XH - DToothlessRise)
|
include : RightwardTailedBar RightSB 0 (XH - DToothlessRise)
|
||||||
|
|
||||||
create-glyph 'a.singleStoreyEarlessRoundedSerifless' : glyph-proc
|
create-glyph 'a.singleStoreyEarlessRoundedSerifless' : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
set-base-anchor 'trailing' RightSB 0
|
||||||
include : OBarLeftRoundedShape XH SB XH
|
include : OBarLeftRoundedShape XH SB XH
|
||||||
include : FlipAround Middle (XH / 2)
|
include : FlipAround Middle (XH / 2)
|
||||||
|
|
||||||
create-glyph 'a.singleStoreyEarlessRoundedSerifed' : glyph-proc
|
create-glyph 'a.singleStoreyEarlessRoundedSerifed' : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
set-base-anchor 'trailing' (RightSB + SideJut) 0
|
||||||
include : OBarLeftRoundedShape XH SB XH
|
include : OBarLeftRoundedShape XH SB XH
|
||||||
include : FlipAround Middle (XH / 2)
|
include : FlipAround Middle (XH / 2)
|
||||||
include : tagged 'serifRB' : RightwardBottomSerif RightSB 0 SideJut
|
include : tagged 'serifRB' : RightwardBottomSerif RightSB 0 SideJut
|
||||||
|
|
||||||
create-glyph 'a.singleStoreyEarlessRoundedTailed' : glyph-proc
|
create-glyph 'a.singleStoreyEarlessRoundedTailed' : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
set-base-anchor 'trailing' (RightSB + SideJut) 0
|
||||||
include : OBarLeftRoundedShape XH SB (SmallArchDepthB - O)
|
include : OBarLeftRoundedShape XH SB (SmallArchDepthB - O)
|
||||||
include : FlipAround Middle (XH / 2)
|
include : FlipAround Middle (XH / 2)
|
||||||
include : RightwardTailedBar RightSB 0 (XH - SmallArchDepthB)
|
include : RightwardTailedBar RightSB 0 (XH - SmallArchDepthB)
|
||||||
|
@ -232,3 +232,6 @@ glyph-block Letter-Latin-Lower-A : begin
|
||||||
CreateAccentedComposition 'aDieresis' 0xE4 'a' 'dieresisAbove'
|
CreateAccentedComposition 'aDieresis' 0xE4 'a' 'dieresisAbove'
|
||||||
CreateAccentedComposition 'aSbRsbUnderlineBelow' null 'a' 'sbRsbUnderlineBelow'
|
CreateAccentedComposition 'aSbRsbUnderlineBelow' null 'a' 'sbRsbUnderlineBelow'
|
||||||
CreateAccentedComposition 'aRightHalfRingTR' 0x1E9A 'a' 'rightHalfCircleTR'
|
CreateAccentedComposition 'aRightHalfRingTR' 0x1E9A 'a' 'rightHalfCircleTR'
|
||||||
|
|
||||||
|
# Ognoek shapes
|
||||||
|
CreateOgonekComposition 'aOgonek' 0x105 'a'
|
||||||
|
|
|
@ -10,12 +10,15 @@ glyph-block Letter-Latin-Lower-E : begin
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
glyph-block-import Letter-Shared-Shapes : FlatHookDepth
|
glyph-block-import Letter-Shared-Shapes : FlatHookDepth
|
||||||
|
|
||||||
|
glyph-block-import Mark-Shared-Metrics : markExtend markStroke markStress markFine
|
||||||
|
glyph-block-import Mark-Above : aboveMarkTop aboveMarkBot aboveMarkMid aboveMarkStack
|
||||||
|
|
||||||
define [SmallEShape] : params [df top stroke barpos curly [bbd 0]] : glyph-proc
|
define [SmallEShape] : params [df top stroke barpos curly [bbd 0]] : glyph-proc
|
||||||
local barbottom : top * [fallback barpos DesignParameters.eBarPos] - (stroke / 2)
|
local barbottom : top * [fallback barpos DesignParameters.eBarPos] - (stroke / 2)
|
||||||
local hook : Math.min AHook : if para.isItalic top (stroke / 2 + (top - stroke * 3) / 4)
|
local hook : Math.min AHook : if para.isItalic top (stroke / 2 + (top - stroke * 3) / 4)
|
||||||
|
|
||||||
include : HBarBottom (df.leftSB + (stroke / 2) + OX + bbd) (df.rightSB - (stroke / 2) - OX) barbottom stroke
|
include : HBarBottom (df.leftSB + (stroke / 2) + OX + bbd) (df.rightSB - (stroke / 2) - OX) barbottom stroke
|
||||||
include : dispiro
|
local path : include : dispiro
|
||||||
widths.lhs stroke
|
widths.lhs stroke
|
||||||
flat (df.rightSB - OX) barbottom [heading Upward]
|
flat (df.rightSB - OX) barbottom [heading Upward]
|
||||||
curl (df.rightSB - OX) (top - SmallArchDepthB)
|
curl (df.rightSB - OX) (top - SmallArchDepthB)
|
||||||
|
@ -27,6 +30,8 @@ glyph-block Letter-Latin-Lower-E : begin
|
||||||
hookend O (sw -- stroke)
|
hookend O (sw -- stroke)
|
||||||
g4 (df.rightSB - OX * [if para.isItalic 0 0.5]) hook
|
g4 (df.rightSB - OX * [if para.isItalic 0 0.5]) hook
|
||||||
|
|
||||||
|
return path.rhsKnots.[path.rhsKnots.length - 1]
|
||||||
|
|
||||||
define [RevSmallEShape] : params [df top stroke barpos] : glyph-proc
|
define [RevSmallEShape] : params [df top stroke barpos] : glyph-proc
|
||||||
local barbottom (top * [fallback barpos DesignParameters.eBarPos] - HalfStroke)
|
local barbottom (top * [fallback barpos DesignParameters.eBarPos] - HalfStroke)
|
||||||
local hookx df.leftSB
|
local hookx df.leftSB
|
||||||
|
@ -53,7 +58,7 @@ glyph-block Letter-Latin-Lower-E : begin
|
||||||
|
|
||||||
local xStart : df.leftSB + (0.125 * stroke * HVContrast)
|
local xStart : df.leftSB + (0.125 * stroke * HVContrast)
|
||||||
local pfIt : if para.isItalic 1 0
|
local pfIt : if para.isItalic 1 0
|
||||||
include : dispiro
|
local path : include : dispiro
|
||||||
widths.lhs stroke
|
widths.lhs stroke
|
||||||
[if para.isItalic g2 flat] xStart (barbottom - pfIt * [StrokeWidthBlend 2 3] * O)
|
[if para.isItalic g2 flat] xStart (barbottom - pfIt * [StrokeWidthBlend 2 3] * O)
|
||||||
if para.isItalic [alsoThru.g2 0.5 0.8] [list]
|
if para.isItalic [alsoThru.g2 0.5 0.8] [list]
|
||||||
|
@ -68,6 +73,8 @@ glyph-block Letter-Latin-Lower-E : begin
|
||||||
hookend O (sw -- stroke)
|
hookend O (sw -- stroke)
|
||||||
g4 (df.rightSB - OX * [if para.isItalic 0 0.5]) hook
|
g4 (df.rightSB - OX * [if para.isItalic 0 0.5]) hook
|
||||||
|
|
||||||
|
return path.rhsKnots.[path.rhsKnots.length - 1]
|
||||||
|
|
||||||
define [RevSmallERoundedShape] : params [df top stroke barpos] : glyph-proc
|
define [RevSmallERoundedShape] : params [df top stroke barpos] : glyph-proc
|
||||||
local barbottom : top * [fallback barpos : if para.isItalic 0.500 0.475] - (stroke / 2)
|
local barbottom : top * [fallback barpos : if para.isItalic 0.500 0.475] - (stroke / 2)
|
||||||
local hook : Math.min AHook : if para.isItalic top (stroke / 2 + (top - stroke * 3) / 4)
|
local hook : Math.min AHook : if para.isItalic top (stroke / 2 + (top - stroke * 3) / 4)
|
||||||
|
@ -119,6 +126,30 @@ glyph-block Letter-Latin-Lower-E : begin
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
include : Body [DivFrame 1] XH [AdviceStroke2 2 3 XH]
|
include : Body [DivFrame 1] XH [AdviceStroke2 2 3 XH]
|
||||||
|
|
||||||
|
create-glyph "eOgonek.\(suffix)" : glyph-proc
|
||||||
|
include : MarkSet.e
|
||||||
|
local lastKnot : include : Body [DivFrame 1] XH [AdviceStroke2 2 3 XH]
|
||||||
|
|
||||||
|
# Connected Ogonek shape
|
||||||
|
local fine : AdviceStroke 8
|
||||||
|
local depth : 0 - Descender - markStroke
|
||||||
|
local extL : (7 / 16) * depth + 0.25 * markStress
|
||||||
|
local extR : Math.max (0.0625 * markExtend) (1.5 * TanSlope * markStroke)
|
||||||
|
local beginCoSlope : if para.isItalic 0.2 0
|
||||||
|
|
||||||
|
set-base-anchor 'trailing' (RightSB + extR) (-depth + 0.5 * O - markStroke)
|
||||||
|
|
||||||
|
include : intersection
|
||||||
|
MaskBelow lastKnot.y
|
||||||
|
dispiro
|
||||||
|
g4 lastKnot.x lastKnot.y [widths.rhs fine]
|
||||||
|
g4 (lastKnot.x - beginCoSlope * 0.01) (lastKnot.y - 0.01)
|
||||||
|
alsoThru.withOffset 0.5 0.525 0 (-0.25 * [mix fine markStroke 0.5]) [widths.rhs [mix fine markStroke 0.5]]
|
||||||
|
g4.down.mid (RightSB - extL) (-0.75 * depth) [widths.rhs.heading markStroke {.x (HVContrast) .y (0.5 * (markStroke - fine) / markStroke)}]
|
||||||
|
arcvh [widths.rhs markStroke]
|
||||||
|
g4 (RightSB + [mix (-extL) extR (11/16)]) (-depth + O) [heading Rightward]
|
||||||
|
g4 (RightSB + extR) (-depth + 0.5 * O) [heading Rightward]
|
||||||
|
|
||||||
create-glyph "Schwa.\(suffix)" : glyph-proc
|
create-glyph "Schwa.\(suffix)" : glyph-proc
|
||||||
include : MarkSet.capital
|
include : MarkSet.capital
|
||||||
include : Body [DivFrame 1] CAP [AdviceStroke2 2 3 CAP]
|
include : Body [DivFrame 1] CAP [AdviceStroke2 2 3 CAP]
|
||||||
|
@ -160,6 +191,8 @@ glyph-block Letter-Latin-Lower-E : begin
|
||||||
alias 'cyrl/ie' 0x435 'e'
|
alias 'cyrl/ie' 0x435 'e'
|
||||||
turned 'turne' 0x1DD 'e' Middle (XH / 2)
|
turned 'turne' 0x1DD 'e' Middle (XH / 2)
|
||||||
|
|
||||||
|
select-variant 'eOgonek' 0x119 (follow -- 'e')
|
||||||
|
|
||||||
select-variant 'Schwa' 0x18F
|
select-variant 'Schwa' 0x18F
|
||||||
alias 'cyrl/Schwa' 0x4D8 'Schwa'
|
alias 'cyrl/Schwa' 0x4D8 'Schwa'
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ glyph-module
|
||||||
glyph-block Letter-Latin-Lower-I : begin
|
glyph-block Letter-Latin-Lower-I : begin
|
||||||
glyph-block-import CommonShapes
|
glyph-block-import CommonShapes
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
glyph-block-import Letter-Shared : CreateAccentedComposition CreateMultiAccentedComposition
|
glyph-block-import Letter-Shared : CreateAccentedComposition CreateMultiAccentedComposition CreateOgonekComposition
|
||||||
glyph-block-import Letter-Shared-Shapes : FlatHookDepth DiagonalTailR DiagonalTailStdDepth
|
glyph-block-import Letter-Shared-Shapes : FlatHookDepth DiagonalTailR DiagonalTailStdDepth
|
||||||
glyph-block-import Letter-Shared : CreateCommaCaronComposition
|
glyph-block-import Letter-Shared : CreateCommaCaronComposition
|
||||||
glyph-block-import Letter-Shared-Shapes : CurlyTail
|
glyph-block-import Letter-Shared-Shapes : CurlyTail
|
||||||
|
@ -55,7 +55,6 @@ glyph-block Letter-Latin-Lower-I : begin
|
||||||
export : define [Serifless df top xMiddle] : glyph-proc
|
export : define [Serifless df top xMiddle] : glyph-proc
|
||||||
include : OverrideILMarks df xMiddle top
|
include : OverrideILMarks df xMiddle top
|
||||||
include : VBar xMiddle 0 top
|
include : VBar xMiddle 0 top
|
||||||
set-base-anchor 'trailing' xMiddle 0
|
|
||||||
|
|
||||||
export : define [HookyBottom df top xMiddle] : glyph-proc
|
export : define [HookyBottom df top xMiddle] : glyph-proc
|
||||||
include : OverrideILMarks df xMiddle top
|
include : OverrideILMarks df xMiddle top
|
||||||
|
@ -271,6 +270,8 @@ glyph-block Letter-Latin-Lower-I : begin
|
||||||
CreateAccentedComposition 'dotlessiBarOver' null 'dotlessi' 'barOver'
|
CreateAccentedComposition 'dotlessiBarOver' null 'dotlessi' 'barOver'
|
||||||
CreateAccentedComposition 'iBarOver' 0x268 'dotlessiBarOver' 'dotAbove'
|
CreateAccentedComposition 'iBarOver' 0x268 'dotlessiBarOver' 'dotAbove'
|
||||||
|
|
||||||
|
CreateOgonekComposition 'iOgonek' 0x12F 'i'
|
||||||
|
|
||||||
do "l glyphs"
|
do "l glyphs"
|
||||||
select-variant 'l' 'l'
|
select-variant 'l' 'l'
|
||||||
link-reduced-variant 'l/sansSerif' 'l' MathSansSerif
|
link-reduced-variant 'l/sansSerif' 'l' MathSansSerif
|
||||||
|
|
|
@ -16,17 +16,14 @@ glyph-block Letter-Latin-O : begin
|
||||||
create-glyph 'O' 'O' : glyph-proc
|
create-glyph 'O' 'O' : glyph-proc
|
||||||
include : MarkSet.capital
|
include : MarkSet.capital
|
||||||
include : OShape CAP 0 SB RightSB nothing ArchDepthA ArchDepthB
|
include : OShape CAP 0 SB RightSB nothing ArchDepthA ArchDepthB
|
||||||
set-base-anchor 'trailing' Middle 0
|
|
||||||
|
|
||||||
create-glyph 'smcpO' 0x1D0F : glyph-proc
|
create-glyph 'smcpO' 0x1D0F : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
include : OShape XH 0 SB RightSB nothing ArchDepthA ArchDepthB
|
include : OShape XH 0 SB RightSB nothing ArchDepthA ArchDepthB
|
||||||
set-base-anchor 'trailing' Middle 0
|
|
||||||
|
|
||||||
create-glyph 'o' 'o' : glyph-proc
|
create-glyph 'o' 'o' : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
include : OShape XH 0 SB RightSB nothing nothing nothing
|
include : OShape XH 0 SB RightSB nothing nothing nothing
|
||||||
set-base-anchor 'trailing' Middle 0
|
|
||||||
|
|
||||||
create-glyph 'oSideways' 0x1D11 : glyph-proc
|
create-glyph 'oSideways' 0x1D11 : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
|
@ -40,7 +37,6 @@ glyph-block Letter-Latin-O : begin
|
||||||
include : OShape CAP 0 SB RightSB df.mvs ArchDepthA ArchDepthB
|
include : OShape CAP 0 SB RightSB df.mvs ArchDepthA ArchDepthB
|
||||||
include : DotAt Middle (df.mvs / 2 + O) rBroadOn
|
include : DotAt Middle (df.mvs / 2 + O) rBroadOn
|
||||||
include : DotAt Middle (CAP - df.mvs / 2 - O) rBroadOn
|
include : DotAt Middle (CAP - df.mvs / 2 - O) rBroadOn
|
||||||
set-base-anchor 'trailing' Middle 0
|
|
||||||
|
|
||||||
create-glyph 'cyrl/broadOn' 0x47B : glyph-proc
|
create-glyph 'cyrl/broadOn' 0x47B : glyph-proc
|
||||||
define df : DivFrame 1 3
|
define df : DivFrame 1 3
|
||||||
|
@ -48,7 +44,6 @@ glyph-block Letter-Latin-O : begin
|
||||||
include : OShape XH 0 SB RightSB df.mvs nothing nothing
|
include : OShape XH 0 SB RightSB df.mvs nothing nothing
|
||||||
include : DotAt Middle (df.mvs / 2 + O) rBroadOn
|
include : DotAt Middle (df.mvs / 2 + O) rBroadOn
|
||||||
include : DotAt Middle (XH - df.mvs / 2 - O) rBroadOn
|
include : DotAt Middle (XH - df.mvs / 2 - O) rBroadOn
|
||||||
set-base-anchor 'trailing' Middle 0
|
|
||||||
|
|
||||||
create-glyph 'grek/Omicron' 0x39F : glyph-proc
|
create-glyph 'grek/Omicron' 0x39F : glyph-proc
|
||||||
include [refer-glyph 'O'] AS_BASE ALSO_METRICS
|
include [refer-glyph 'O'] AS_BASE ALSO_METRICS
|
||||||
|
|
|
@ -9,7 +9,7 @@ glyph-block Letter-Latin-U : begin
|
||||||
glyph-block-import CommonShapes
|
glyph-block-import CommonShapes
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
glyph-block-import Mark-Shared-Metrics : markHalfStroke
|
glyph-block-import Mark-Shared-Metrics : markHalfStroke
|
||||||
glyph-block-import Letter-Shared : CreateAccentedComposition SetGrekUpperTonos
|
glyph-block-import Letter-Shared : CreateAccentedComposition SetGrekUpperTonos CreateOgonekComposition
|
||||||
glyph-block-import Letter-Shared-Shapes : nShoulder RightwardTailedBar DToothlessRise SerifFrame
|
glyph-block-import Letter-Shared-Shapes : nShoulder RightwardTailedBar DToothlessRise SerifFrame
|
||||||
glyph-block-import Letter-Shared-Shapes : CyrTailDescender
|
glyph-block-import Letter-Shared-Shapes : CyrTailDescender
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ glyph-block Letter-Latin-U : begin
|
||||||
offset -- offset
|
offset -- offset
|
||||||
|
|
||||||
define [UToothed df top] : glyph-proc
|
define [UToothed df top] : glyph-proc
|
||||||
set-base-anchor 'trailing' (df.rightSB - markHalfStroke) 0
|
set-base-anchor 'trailing' df.rightSB 0
|
||||||
include : nShoulder
|
include : nShoulder
|
||||||
top -- top
|
top -- top
|
||||||
left -- (df.leftSB + Stroke * HVContrast)
|
left -- (df.leftSB + Stroke * HVContrast)
|
||||||
|
@ -46,7 +46,7 @@ glyph-block Letter-Latin-U : begin
|
||||||
include : VBarRight df.rightSB 0 top
|
include : VBarRight df.rightSB 0 top
|
||||||
|
|
||||||
define [UTailed df top] : glyph-proc
|
define [UTailed df top] : glyph-proc
|
||||||
set-base-anchor 'trailing' (df.rightSB - markHalfStroke) 0
|
set-base-anchor 'trailing' (df.rightSB + SideJut) 0
|
||||||
include : nShoulder
|
include : nShoulder
|
||||||
top -- top
|
top -- top
|
||||||
left -- (df.leftSB + Stroke * HVContrast)
|
left -- (df.leftSB + Stroke * HVContrast)
|
||||||
|
@ -56,15 +56,12 @@ glyph-block Letter-Latin-U : begin
|
||||||
include : RightwardTailedBar df.rightSB 0 top
|
include : RightwardTailedBar df.rightSB 0 top
|
||||||
|
|
||||||
define [UToothlessRounded df top] : glyph-proc
|
define [UToothlessRounded df top] : glyph-proc
|
||||||
set-base-anchor 'trailing' df.middle 0
|
|
||||||
include : UShape df top 0
|
include : UShape df top 0
|
||||||
|
|
||||||
define [UToothlessRoundedSmall df top] : glyph-proc
|
define [UToothlessRoundedSmall df top] : glyph-proc
|
||||||
set-base-anchor 'trailing' df.middle 0
|
|
||||||
include : UShape df top 0 (ada -- SmallArchDepthA) (adb -- SmallArchDepthB)
|
include : UShape df top 0 (ada -- SmallArchDepthA) (adb -- SmallArchDepthB)
|
||||||
|
|
||||||
define [UToothlessCorner df top] : glyph-proc
|
define [UToothlessCorner df top] : glyph-proc
|
||||||
set-base-anchor 'trailing' df.middle 0
|
|
||||||
include : VBarLeft df.leftSB 0 (top - DToothlessRise)
|
include : VBarLeft df.leftSB 0 (top - DToothlessRise)
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.rhs
|
widths.rhs
|
||||||
|
@ -76,7 +73,6 @@ glyph-block Letter-Latin-U : begin
|
||||||
include : FlipAround df.middle (top / 2)
|
include : FlipAround df.middle (top / 2)
|
||||||
|
|
||||||
define [UToothlessCornerSmall df top] : glyph-proc
|
define [UToothlessCornerSmall df top] : glyph-proc
|
||||||
set-base-anchor 'trailing' df.middle 0
|
|
||||||
include : VBarLeft df.leftSB 0 (top - DToothlessRise)
|
include : VBarLeft df.leftSB 0 (top - DToothlessRise)
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.rhs
|
widths.rhs
|
||||||
|
@ -93,8 +89,11 @@ glyph-block Letter-Latin-U : begin
|
||||||
define [UTopRightSerif df yTop] : tagged 'serifRT'
|
define [UTopRightSerif df yTop] : tagged 'serifRT'
|
||||||
LeftwardTopSerif (df.rightSB - Stroke * HVContrast) yTop SideJut
|
LeftwardTopSerif (df.rightSB - Stroke * HVContrast) yTop SideJut
|
||||||
|
|
||||||
define [UBottomRightSerif df yTop] : tagged 'serifRB'
|
define [UBottomRightSerif df yTop] : glyph-proc
|
||||||
RightwardBottomSerif df.rightSB 0 SideJut
|
include : tagged 'serifRB' : RightwardBottomSerif df.rightSB 0 SideJut
|
||||||
|
define trAnchor currentGlyph.baseAnchors.trailing
|
||||||
|
if trAnchor : begin
|
||||||
|
set-base-anchor 'trailing' (trAnchor.x + SideJut) trAnchor.y
|
||||||
|
|
||||||
define [SmallUSlabs df top] : glyph-proc : if SLAB : begin
|
define [SmallUSlabs df top] : glyph-proc : if SLAB : begin
|
||||||
include : UTopLeftSerif df top
|
include : UTopLeftSerif df top
|
||||||
|
@ -299,3 +298,6 @@ glyph-block Letter-Latin-U : begin
|
||||||
include : Translate 0 (SB / 2)
|
include : Translate 0 (SB / 2)
|
||||||
|
|
||||||
CreateAccentedComposition 'uDieresisSideways' 0x1D1E 'uDieresisSidewaysBase' 'uDieresisSidewaysMark'
|
CreateAccentedComposition 'uDieresisSideways' 0x1D1E 'uDieresisSidewaysBase' 'uDieresisSidewaysMark'
|
||||||
|
|
||||||
|
CreateOgonekComposition 'UOgonek' 0x172 'U'
|
||||||
|
CreateOgonekComposition 'uOgonek' 0x173 'u'
|
||||||
|
|
|
@ -9,7 +9,7 @@ glyph-block Letter-Latin-Upper-A : begin
|
||||||
glyph-block-import CommonShapes
|
glyph-block-import CommonShapes
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
glyph-block-import Mark-Shared-Metrics : markHalfStroke
|
glyph-block-import Mark-Shared-Metrics : markHalfStroke
|
||||||
glyph-block-import Letter-Shared : SetGrekUpperTonos
|
glyph-block-import Letter-Shared : SetGrekUpperTonos CreateOgonekComposition
|
||||||
glyph-block-import Letter-Shared-Shapes : SerifFrame
|
glyph-block-import Letter-Shared-Shapes : SerifFrame
|
||||||
glyph-block-import Letter-Latin-V : VShapeOutline VShape
|
glyph-block-import Letter-Latin-V : VShapeOutline VShape
|
||||||
glyph-block-export LambdaShape AMaskShape DeltaShape
|
glyph-block-export LambdaShape AMaskShape DeltaShape
|
||||||
|
@ -48,7 +48,7 @@ glyph-block Letter-Latin-Upper-A : begin
|
||||||
define [AShapeImpl mak top fGrek] : glyph-proc
|
define [AShapeImpl mak top fGrek] : glyph-proc
|
||||||
local df : DivFrame 1
|
local df : DivFrame 1
|
||||||
include : df.markSet.(mak)
|
include : df.markSet.(mak)
|
||||||
set-base-anchor 'trailing' (df.rightSB - markHalfStroke) 0
|
set-base-anchor 'trailing' df.rightSB 0
|
||||||
if fGrek : include : SetGrekUpperTonos
|
if fGrek : include : SetGrekUpperTonos
|
||||||
[if (slabKind === SLAB-TOP || slabKind === SLAB-TRI) 0 0.2] * (df.rightSB - df.leftSB)
|
[if (slabKind === SLAB-TOP || slabKind === SLAB-TRI) 0 0.2] * (df.rightSB - df.leftSB)
|
||||||
include : VShape df top Stroke fStraightBar
|
include : VShape df top Stroke fStraightBar
|
||||||
|
@ -123,3 +123,5 @@ glyph-block Letter-Latin-Upper-A : begin
|
||||||
BBVInnerMaskShape SB RightSB 1 1 CAP
|
BBVInnerMaskShape SB RightSB 1 1 CAP
|
||||||
HBarTop 0 Width (CAP - XH / 2) BBS
|
HBarTop 0 Width (CAP - XH / 2) BBS
|
||||||
include : FlipAround Middle (CAP / 2)
|
include : FlipAround Middle (CAP / 2)
|
||||||
|
|
||||||
|
CreateOgonekComposition 'AOgonek' 0x104 'A'
|
||||||
|
|
|
@ -9,7 +9,7 @@ glyph-block Letter-Latin-Upper-E : begin
|
||||||
glyph-block-import CommonShapes
|
glyph-block-import CommonShapes
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
glyph-block-import Mark-Shared-Metrics : markHalfStroke
|
glyph-block-import Mark-Shared-Metrics : markHalfStroke
|
||||||
glyph-block-import Letter-Shared : SetGrekUpperTonos
|
glyph-block-import Letter-Shared : SetGrekUpperTonos CreateOgonekComposition
|
||||||
glyph-block-import Letter-Latin-Upper-F : xMidBarShrink yMidBar EFVJutLength
|
glyph-block-import Letter-Latin-Upper-F : xMidBarShrink yMidBar EFVJutLength
|
||||||
|
|
||||||
define kSB 1
|
define kSB 1
|
||||||
|
@ -49,7 +49,7 @@ glyph-block Letter-Latin-Upper-E : begin
|
||||||
create-glyph "E.\(suffix)" : glyph-proc
|
create-glyph "E.\(suffix)" : glyph-proc
|
||||||
include : MarkSet.capital
|
include : MarkSet.capital
|
||||||
include : EShape CAP (serifLT -- lt) (serifLB -- lb) (serifV -- v)
|
include : EShape CAP (serifLT -- lt) (serifLB -- lb) (serifV -- v)
|
||||||
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
set-base-anchor 'trailing' RightSB 0
|
||||||
|
|
||||||
create-glyph "grek/Epsilon.\(suffix)" : glyph-proc
|
create-glyph "grek/Epsilon.\(suffix)" : glyph-proc
|
||||||
include [refer-glyph "E.\(suffix)"] AS_BASE ALSO_METRICS
|
include [refer-glyph "E.\(suffix)"] AS_BASE ALSO_METRICS
|
||||||
|
@ -84,3 +84,6 @@ glyph-block Letter-Latin-Upper-E : begin
|
||||||
EShape CAP (serif -- false) (stroke -- BBS)
|
EShape CAP (serif -- false) (stroke -- BBS)
|
||||||
Rect (CAP - BBS) BBS (xEBarLeft + BBS * HVContrast) (xEBarLeft + BBD)
|
Rect (CAP - BBS) BBS (xEBarLeft + BBS * HVContrast) (xEBarLeft + BBD)
|
||||||
VBarLeft (xEBarLeft + BBD) 0 CAP BBS
|
VBarLeft (xEBarLeft + BBD) 0 CAP BBS
|
||||||
|
|
||||||
|
# Ognoek shapes
|
||||||
|
CreateOgonekComposition 'EOgonek' 0x118 'E'
|
||||||
|
|
|
@ -8,11 +8,10 @@ glyph-module
|
||||||
glyph-block Letter-Latin-Upper-I : begin
|
glyph-block Letter-Latin-Upper-I : begin
|
||||||
glyph-block-import CommonShapes
|
glyph-block-import CommonShapes
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
glyph-block-import Letter-Shared : SetGrekUpperTonos CreateAccentedComposition
|
glyph-block-import Letter-Shared : SetGrekUpperTonos CreateAccentedComposition CreateOgonekComposition
|
||||||
|
|
||||||
define [ISeriflessShape df top jut] : glyph-proc
|
define [ISeriflessShape df top jut] : glyph-proc
|
||||||
include : VBar df.middle 0 CAP
|
include : VBar df.middle 0 CAP
|
||||||
set-base-anchor 'trailing' df.middle 0
|
|
||||||
|
|
||||||
define [ISerifShape df top jut] : glyph-proc
|
define [ISerifShape df top jut] : glyph-proc
|
||||||
include : VBar df.middle 0 top
|
include : VBar df.middle 0 top
|
||||||
|
@ -58,3 +57,5 @@ glyph-block Letter-Latin-Upper-I : begin
|
||||||
include : HBarBottom (Middle - BBD / 2 - Jut) (Middle + BBD / 2 + Jut) 0 BBS
|
include : HBarBottom (Middle - BBD / 2 - Jut) (Middle + BBD / 2 + Jut) 0 BBS
|
||||||
|
|
||||||
CreateAccentedComposition 'smcpIBarOver' 0x1D7B 'smcpI' 'barOver'
|
CreateAccentedComposition 'smcpIBarOver' 0x1D7B 'smcpI' 'barOver'
|
||||||
|
|
||||||
|
CreateOgonekComposition 'IOgonek' 0x12E 'I'
|
||||||
|
|
|
@ -11,13 +11,22 @@ glyph-block Letter-Shared : begin
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
|
|
||||||
glyph-block-export CreateAccentedComposition
|
glyph-block-export CreateAccentedComposition
|
||||||
define [CreateAccentedComposition dst u srcGid accentGid fDontDecompose]
|
define [CreateAccentedComposition dst u srcGid accentGid]
|
||||||
derive-multi-part-glyphs dst u { srcGid accentGid } : function [gns gr] : glyph-proc
|
derive-multi-part-glyphs dst u { srcGid accentGid } : function [gns gr] : glyph-proc
|
||||||
local { base mark } gns
|
local { base mark } gns
|
||||||
include [refer-glyph base] AS_BASE ALSO_METRICS
|
include [refer-glyph base] AS_BASE ALSO_METRICS
|
||||||
include [refer-glyph mark]
|
include [refer-glyph mark]
|
||||||
if (!gr && accentGid === 'dotAbove') : Dotless.set currentGlyph base
|
if (!gr && accentGid === 'dotAbove') : Dotless.set currentGlyph base
|
||||||
|
|
||||||
|
glyph-block-export CreateOgonekComposition
|
||||||
|
define [CreateOgonekComposition dst u srcGid]
|
||||||
|
derive-multi-part-glyphs dst u { srcGid 'ogonekBelow' 'ogonekTR' } : function [gns gr] : glyph-proc
|
||||||
|
local { base markBelow markTR } gns
|
||||||
|
include [refer-glyph base] AS_BASE ALSO_METRICS
|
||||||
|
if currentGlyph.baseAnchors.trailing
|
||||||
|
then : include [refer-glyph markTR]
|
||||||
|
else : include [refer-glyph markBelow]
|
||||||
|
|
||||||
glyph-block-export CreateCommaCaronComposition
|
glyph-block-export CreateCommaCaronComposition
|
||||||
define [CreateCommaCaronComposition dst u sourceGid]
|
define [CreateCommaCaronComposition dst u sourceGid]
|
||||||
derive-multi-part-glyphs dst u { sourceGid 'commaTR' } : function [gns gr] : glyph-proc
|
derive-multi-part-glyphs dst u { sourceGid 'commaTR' } : function [gns gr] : glyph-proc
|
||||||
|
|
|
@ -14,7 +14,7 @@ glyph-block Mark-Above : begin
|
||||||
glyph-block-import CommonShapes
|
glyph-block-import CommonShapes
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
|
|
||||||
glyph-block-import Mark-Shared-Metrics : markExtend markHalfStroke markStress markFine
|
glyph-block-import Mark-Shared-Metrics : markExtend markStroke markHalfStroke markStress markFine
|
||||||
glyph-block-import Mark-Shared-Metrics : markMiddle markDotsRadius
|
glyph-block-import Mark-Shared-Metrics : markMiddle markDotsRadius
|
||||||
|
|
||||||
glyph-block-export aboveMarkTop aboveMarkBot aboveMarkMid aboveMarkStack
|
glyph-block-export aboveMarkTop aboveMarkBot aboveMarkMid aboveMarkStack
|
||||||
|
@ -24,8 +24,8 @@ glyph-block Mark-Above : begin
|
||||||
define aboveMarkStack (XH + AccentStackOffset)
|
define aboveMarkStack (XH + AccentStackOffset)
|
||||||
|
|
||||||
glyph-block-export commaOvershoot commaOvershoot2 commaAboveRadius
|
glyph-block-export commaOvershoot commaOvershoot2 commaAboveRadius
|
||||||
define commaOvershoot : O * [linreg 16 0 90 (-1) (markHalfStroke * 2)]
|
define commaOvershoot : O * [linreg 16 0 90 (-1) markStroke]
|
||||||
define commaOvershoot2 : O * [linreg 16 1 90 (-1) (markHalfStroke * 2)]
|
define commaOvershoot2 : O * [linreg 16 1 90 (-1) markStroke]
|
||||||
define commaAboveRadius : 0.85 * DotRadius * markHalfStroke / HalfStroke
|
define commaAboveRadius : 0.85 * DotRadius * markHalfStroke / HalfStroke
|
||||||
|
|
||||||
define asciiMarkZoom : (RightSB - SB) / (markExtend * 3)
|
define asciiMarkZoom : (RightSB - SB) / (markExtend * 3)
|
||||||
|
@ -58,8 +58,8 @@ glyph-block Mark-Above : begin
|
||||||
select-variant 'dieresisAboveAlwaysUpright' (follow -- 'diacriticDot')
|
select-variant 'dieresisAboveAlwaysUpright' (follow -- 'diacriticDot')
|
||||||
|
|
||||||
define [RingDims] : begin
|
define [RingDims] : begin
|
||||||
local radiusOut : AccentHeight * [linreg 16 0.5 90 0.75 (markHalfStroke * 2)]
|
local radiusOut : AccentHeight * [linreg 16 0.5 90 0.75 markStroke]
|
||||||
local radiusIn : radiusOut - markFine * [linreg 16 2 90 1.75 (markHalfStroke * 2)]
|
local radiusIn : radiusOut - markFine * [linreg 16 2 90 1.75 markStroke]
|
||||||
return [object radiusIn radiusOut]
|
return [object radiusIn radiusOut]
|
||||||
|
|
||||||
create-glyph 'ringAbove' 0x30A : glyph-proc
|
create-glyph 'ringAbove' 0x30A : glyph-proc
|
||||||
|
@ -130,7 +130,7 @@ glyph-block Mark-Above : begin
|
||||||
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
||||||
|
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.rhs (markHalfStroke * 2)
|
widths.rhs markStroke
|
||||||
flat (markMiddle - markExtend * 1.5) (aboveMarkTop + markFine * 0.7)
|
flat (markMiddle - markExtend * 1.5) (aboveMarkTop + markFine * 0.7)
|
||||||
curl (markMiddle + markStress * HVContrast) (aboveMarkTop + markFine * 0.7)
|
curl (markMiddle + markStress * HVContrast) (aboveMarkTop + markFine * 0.7)
|
||||||
include : dispiro
|
include : dispiro
|
||||||
|
@ -146,7 +146,7 @@ glyph-block Mark-Above : begin
|
||||||
flat (markMiddle - markExtend - markStress) (aboveMarkBot + markStress - markFine) [widths markStress markStress]
|
flat (markMiddle - markExtend - markStress) (aboveMarkBot + markStress - markFine) [widths markStress markStress]
|
||||||
curl markMiddle (aboveMarkTop + markFine * 0.7) [heading Upward]
|
curl markMiddle (aboveMarkTop + markFine * 0.7) [heading Upward]
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.rhs (markHalfStroke * 2)
|
widths.rhs markStroke
|
||||||
flat (markMiddle - markStress * HVContrast) (aboveMarkTop + markFine * 0.7)
|
flat (markMiddle - markStress * HVContrast) (aboveMarkTop + markFine * 0.7)
|
||||||
curl (markMiddle + markExtend * 1.5) (aboveMarkTop + markFine * 0.7)
|
curl (markMiddle + markExtend * 1.5) (aboveMarkTop + markFine * 0.7)
|
||||||
|
|
||||||
|
@ -176,7 +176,7 @@ glyph-block Mark-Above : begin
|
||||||
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
||||||
|
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.lhs (markHalfStroke * 2)
|
widths.lhs markStroke
|
||||||
flat (markMiddle - markExtend * 1.5) (aboveMarkBot - markFine * 1.7 + markStress)
|
flat (markMiddle - markExtend * 1.5) (aboveMarkBot - markFine * 1.7 + markStress)
|
||||||
curl (markMiddle + markStress * HVContrast) (aboveMarkBot - markFine * 1.7 + markStress)
|
curl (markMiddle + markStress * HVContrast) (aboveMarkBot - markFine * 1.7 + markStress)
|
||||||
include : dispiro
|
include : dispiro
|
||||||
|
@ -192,7 +192,7 @@ glyph-block Mark-Above : begin
|
||||||
flat (markMiddle - markExtend - markStress) aboveMarkTop [widths markStress markStress]
|
flat (markMiddle - markExtend - markStress) aboveMarkTop [widths markStress markStress]
|
||||||
curl markMiddle (aboveMarkBot - markFine * 1.7 + markStress) [heading Downward]
|
curl markMiddle (aboveMarkBot - markFine * 1.7 + markStress) [heading Downward]
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.lhs (markHalfStroke * 2)
|
widths.lhs markStroke
|
||||||
flat (markMiddle - markStress * HVContrast) (aboveMarkBot - markFine * 1.7 + markStress)
|
flat (markMiddle - markStress * HVContrast) (aboveMarkBot - markFine * 1.7 + markStress)
|
||||||
curl (markMiddle + markExtend * 1.5) (aboveMarkBot - markFine * 1.7 + markStress)
|
curl (markMiddle + markExtend * 1.5) (aboveMarkBot - markFine * 1.7 + markStress)
|
||||||
|
|
||||||
|
@ -497,7 +497,7 @@ glyph-block Mark-Above : begin
|
||||||
local radius commaAboveRadius
|
local radius commaAboveRadius
|
||||||
include : Ring (aboveMarkTop + commaOvershoot) (aboveMarkTop - radius * 2 + commaOvershoot) (markMiddle - radius) (markMiddle + radius)
|
include : Ring (aboveMarkTop + commaOvershoot) (aboveMarkTop - radius * 2 + commaOvershoot) (markMiddle - radius) (markMiddle + radius)
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.rhs : Math.min radius (markFine * [linreg 16 2 90 1.75 (markHalfStroke * 2)])
|
widths.rhs : Math.min radius (markFine * [linreg 16 2 90 1.75 markStroke])
|
||||||
straight.down.start (markMiddle + radius) (aboveMarkTop - radius + commaOvershoot)
|
straight.down.start (markMiddle + radius) (aboveMarkTop - radius + commaOvershoot)
|
||||||
quadControls 0 0.6
|
quadControls 0 0.6
|
||||||
g4 [mix markMiddle (markMiddle - radius) 0.2] (aboveMarkBot - radius - commaOvershoot2)
|
g4 [mix markMiddle (markMiddle - radius) 0.2] (aboveMarkBot - radius - commaOvershoot2)
|
||||||
|
@ -511,7 +511,7 @@ glyph-block Mark-Above : begin
|
||||||
local radius : commaAboveRadius * DesignParameters.squareDotScalar
|
local radius : commaAboveRadius * DesignParameters.squareDotScalar
|
||||||
include : Rect aboveMarkTop (aboveMarkTop - radius * 2) (markMiddle - radius) (markMiddle + radius)
|
include : Rect aboveMarkTop (aboveMarkTop - radius * 2) (markMiddle - radius) (markMiddle + radius)
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.rhs : Math.min radius (markFine * [linreg 16 2 90 1.75 (markHalfStroke * 2)])
|
widths.rhs : Math.min radius (markFine * [linreg 16 2 90 1.75 markStroke])
|
||||||
flat (markMiddle + radius) aboveMarkTop [heading Downward]
|
flat (markMiddle + radius) aboveMarkTop [heading Downward]
|
||||||
curl (markMiddle + radius) (aboveMarkTop - 2 * radius) [heading Downward]
|
curl (markMiddle + radius) (aboveMarkTop - 2 * radius) [heading Downward]
|
||||||
quadControls 0 0.6
|
quadControls 0 0.6
|
||||||
|
@ -541,7 +541,7 @@ glyph-block Mark-Above : begin
|
||||||
local radius commaAboveRadius
|
local radius commaAboveRadius
|
||||||
include : Ring (aboveMarkTop + commaOvershoot) (aboveMarkTop - radius * 2 + commaOvershoot) (markMiddle - radius) (markMiddle + radius)
|
include : Ring (aboveMarkTop + commaOvershoot) (aboveMarkTop - radius * 2 + commaOvershoot) (markMiddle - radius) (markMiddle + radius)
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.lhs : Math.min radius (markFine * [linreg 16 2 90 1.75 (markHalfStroke * 2)])
|
widths.lhs : Math.min radius (markFine * [linreg 16 2 90 1.75 markStroke])
|
||||||
straight.down.start (markMiddle - radius) (aboveMarkTop - radius + commaOvershoot)
|
straight.down.start (markMiddle - radius) (aboveMarkTop - radius + commaOvershoot)
|
||||||
quadControls 0 0.6
|
quadControls 0 0.6
|
||||||
g4 [mix markMiddle (markMiddle + radius) 0.2] (aboveMarkBot - radius - commaOvershoot2)
|
g4 [mix markMiddle (markMiddle + radius) 0.2] (aboveMarkBot - radius - commaOvershoot2)
|
||||||
|
@ -555,7 +555,7 @@ glyph-block Mark-Above : begin
|
||||||
local radius : commaAboveRadius * DesignParameters.squareDotScalar
|
local radius : commaAboveRadius * DesignParameters.squareDotScalar
|
||||||
include : Rect (aboveMarkTop + commaOvershoot) (aboveMarkTop - radius * 2 + commaOvershoot) (markMiddle - radius) (markMiddle + radius)
|
include : Rect (aboveMarkTop + commaOvershoot) (aboveMarkTop - radius * 2 + commaOvershoot) (markMiddle - radius) (markMiddle + radius)
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.lhs : Math.min radius (markFine * [linreg 16 2 90 1.75 (markHalfStroke * 2)])
|
widths.lhs : Math.min radius (markFine * [linreg 16 2 90 1.75 markStroke])
|
||||||
flat (markMiddle - radius) aboveMarkTop [heading Downward]
|
flat (markMiddle - radius) aboveMarkTop [heading Downward]
|
||||||
curl (markMiddle - radius) (aboveMarkTop - 2 * radius) [heading Downward]
|
curl (markMiddle - radius) (aboveMarkTop - 2 * radius) [heading Downward]
|
||||||
quadControls 0 0.6
|
quadControls 0 0.6
|
||||||
|
@ -575,22 +575,22 @@ glyph-block Mark-Above : begin
|
||||||
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
|
||||||
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
||||||
|
|
||||||
include : VBar markMiddle aboveMarkBot aboveMarkTop (markHalfStroke * 2)
|
include : VBar markMiddle aboveMarkBot aboveMarkTop markStroke
|
||||||
|
|
||||||
create-glyph 'ascenderBarAbove' : glyph-proc
|
create-glyph 'ascenderBarAbove' : glyph-proc
|
||||||
set-width 0
|
set-width 0
|
||||||
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
|
||||||
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
||||||
|
|
||||||
include : VBar markMiddle [mix XH aboveMarkBot 0.5] CAP (markHalfStroke * 2)
|
include : VBar markMiddle [mix XH aboveMarkBot 0.5] CAP markStroke
|
||||||
|
|
||||||
create-glyph 'dblBarAbove' 0x30E : glyph-proc
|
create-glyph 'dblBarAbove' 0x30E : glyph-proc
|
||||||
set-width 0
|
set-width 0
|
||||||
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
|
||||||
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
||||||
|
|
||||||
include : VBar (markMiddle - markExtend * 0.75) aboveMarkBot aboveMarkTop (markHalfStroke * 2)
|
include : VBar (markMiddle - markExtend * 0.75) aboveMarkBot aboveMarkTop markStroke
|
||||||
include : VBar (markMiddle + markExtend * 0.75) aboveMarkBot aboveMarkTop (markHalfStroke * 2)
|
include : VBar (markMiddle + markExtend * 0.75) aboveMarkBot aboveMarkTop markStroke
|
||||||
|
|
||||||
create-glyph 'bridgeAbove' 0x346 : glyph-proc
|
create-glyph 'bridgeAbove' 0x346 : glyph-proc
|
||||||
set-width 0
|
set-width 0
|
||||||
|
@ -616,7 +616,7 @@ glyph-block Mark-Above : begin
|
||||||
create-glyph "candrabinduAbove.\(suffix)" : glyph-proc
|
create-glyph "candrabinduAbove.\(suffix)" : glyph-proc
|
||||||
set-width 0
|
set-width 0
|
||||||
local fine : AdviceStroke 6.5
|
local fine : AdviceStroke 6.5
|
||||||
local arcSw : Math.min (markHalfStroke * 2) (fine * 1.25)
|
local arcSw : Math.min markStroke (fine * 1.25)
|
||||||
local radius : Math.max (markExtend - DotRadius) (fine * 1.35)
|
local radius : Math.max (markExtend - DotRadius) (fine * 1.35)
|
||||||
local yDot : mix aboveMarkBot aboveMarkTop 0.625
|
local yDot : mix aboveMarkBot aboveMarkTop 0.625
|
||||||
include : dispiro
|
include : dispiro
|
||||||
|
@ -883,26 +883,18 @@ glyph-block Mark-Above : begin
|
||||||
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
|
||||||
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
||||||
|
|
||||||
local fine : [Math.min [AdviceStroke 8] (Stroke + O)] / 2
|
local fine : AdviceStroke 8
|
||||||
local ogonekBot : XH - 2 * fine
|
local depth : 0 - Descender - markStroke
|
||||||
local ogonekTop : aboveMarkMid + markStress
|
local fullExt : (7 / 16) * depth + 0.125 * markStress
|
||||||
local ogonekLeft : markMiddle - markExtend
|
local extR : 0.5 * fullExt
|
||||||
local ogonekRight : markMiddle + (ogonekTop - ogonekBot) * 0.5
|
local extL : 0.5 * fullExt + 0.375 * markStroke + [Math.max (0.125 * markExtend) (1.5 * TanSlope * markStroke)]
|
||||||
include : spiro-outline
|
|
||||||
corner (markMiddle - 0.1) ogonekBot
|
include : dispiro
|
||||||
curl markMiddle ogonekBot
|
g4 (markMiddle + [mix extR (-extL) 0.75]) XH [widths.rhs fine]
|
||||||
archv
|
g4.up.mid (markMiddle + extR) (XH + 0.75 * depth) [widths.rhs.heading markStroke {.x (-HVContrast) .y (-0.5 * (markStroke - fine) / markStroke)}]
|
||||||
g4 ogonekRight [mix ogonekBot ogonekTop 0.5]
|
arcvh [widths.rhs markStroke]
|
||||||
arcvh
|
g4 (markMiddle + [mix extR (-extL) 0.625]) (XH + depth - O) [heading Leftward]
|
||||||
flat (markMiddle - markExtend * 0.25) ogonekTop
|
g4 (markMiddle - extL) (XH + depth - 0.5 * O) [heading Leftward]
|
||||||
corner ogonekLeft ogonekTop
|
|
||||||
corner ogonekLeft (ogonekTop - markStress * 2)
|
|
||||||
curl (markMiddle - markExtend * 0.25) (ogonekTop - markStress * 2)
|
|
||||||
archv
|
|
||||||
g4 (ogonekRight - [mix fine markStress 0.75] * 2 * HVContrast) [mix (ogonekBot + fine * 2) (ogonekTop - markStress * 2) 0.5]
|
|
||||||
arcvh
|
|
||||||
flat markMiddle (ogonekBot + fine * 2)
|
|
||||||
corner (markMiddle - 0.1) (ogonekBot + fine * 2)
|
|
||||||
|
|
||||||
create-glyph 'leftHalfCircleAbove' 0x351 : glyph-proc
|
create-glyph 'leftHalfCircleAbove' 0x351 : glyph-proc
|
||||||
set-width 0
|
set-width 0
|
||||||
|
|
|
@ -13,7 +13,7 @@ glyph-block Mark-Horn-And-Angle : begin
|
||||||
glyph-block-import CommonShapes
|
glyph-block-import CommonShapes
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
|
|
||||||
glyph-block-import Mark-Shared-Metrics : markExtend markHalfStroke markStress markFine
|
glyph-block-import Mark-Shared-Metrics : markExtend markStroke markStress markFine
|
||||||
glyph-block-import Mark-Shared-Metrics : markMiddle markDotsRadius
|
glyph-block-import Mark-Shared-Metrics : markMiddle markDotsRadius
|
||||||
glyph-block-import Mark-Above : aboveMarkTop aboveMarkBot aboveMarkMid aboveMarkStack
|
glyph-block-import Mark-Above : aboveMarkTop aboveMarkBot aboveMarkMid aboveMarkStack
|
||||||
glyph-block-import Mark-Above : commaAboveRadius
|
glyph-block-import Mark-Above : commaAboveRadius
|
||||||
|
@ -152,7 +152,21 @@ glyph-block Mark-Horn-And-Angle : begin
|
||||||
|
|
||||||
create-glyph 'ogonekTR' : glyph-proc
|
create-glyph 'ogonekTR' : glyph-proc
|
||||||
set-width 0
|
set-width 0
|
||||||
include : refer-glyph "ogonekBelow"
|
|
||||||
local ogonekBot : [mix belowMarkTop belowMarkBot 0.75] + markStress
|
local fine : AdviceStroke 8
|
||||||
local ogonekRight : markMiddle + markExtend * 0.85
|
local depth : 0 - Descender - markStroke
|
||||||
set-mark-anchor 'trailing' markMiddle 0 ogonekRight ogonekBot
|
local extL : (7 / 16) * depth + 0.125 * markStress
|
||||||
|
local extR : Math.max (0.125 * markExtend) (1.5 * TanSlope * markStroke)
|
||||||
|
|
||||||
|
include : difference
|
||||||
|
dispiro
|
||||||
|
g4 markMiddle 0 [widths.rhs fine]
|
||||||
|
g4.down.mid (markMiddle - extL) (-0.75 * depth) [widths.rhs.heading markStroke {.x (HVContrast) .y (0.5 * (markStroke - fine) / markStroke)}]
|
||||||
|
arcvh [widths.rhs markStroke]
|
||||||
|
g4 (markMiddle + [mix (-extL) extR (11/16)]) (-depth + O) [heading Rightward]
|
||||||
|
g4 (markMiddle + extR) (-depth + 0.5 * O) [heading Rightward]
|
||||||
|
intersection
|
||||||
|
MaskAbove 0
|
||||||
|
MaskRight markMiddle
|
||||||
|
|
||||||
|
set-mark-anchor 'trailing' markMiddle 0 (markMiddle + extR) (-depth - 0.5 * O - markStroke)
|
||||||
|
|
|
@ -14,9 +14,10 @@ glyph-block Mark-Shared-Metrics : begin
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
|
|
||||||
### Combining marks
|
### Combining marks
|
||||||
glyph-block-export markExtend markHalfStroke markStress markFine
|
glyph-block-export markExtend markStroke markHalfStroke markStress markFine
|
||||||
define markExtend (AccentWidth * 0.5)
|
define markExtend (AccentWidth * 0.5)
|
||||||
define markHalfStroke : 0.5 * [AdviceStroke2 3.375 3.5 XH]
|
define markStroke : AdviceStroke2 3.375 3.5 XH
|
||||||
|
define markHalfStroke : 0.5 * markStroke
|
||||||
define markStress : markHalfStroke * 1.1
|
define markStress : markHalfStroke * 1.1
|
||||||
define markFine : Math.min (markHalfStroke * 0.9) (0.5 * [AdviceStroke2 3.875 4.25 XH])
|
define markFine : Math.min (markHalfStroke * 0.9) (0.5 * [AdviceStroke2 3.875 4.25 XH])
|
||||||
|
|
||||||
|
|
|
@ -209,6 +209,13 @@ export function SetupBuilders(bindings) {
|
||||||
fallback(args.raf, unimportant)
|
fallback(args.raf, unimportant)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
function afInterpolateDelta(before, after, args) {
|
||||||
|
return g4(
|
||||||
|
mix(before.x, after.x, args.rx) + args.deltaX,
|
||||||
|
mix(before.y, after.y, args.ry) + args.deltaY,
|
||||||
|
fallback(args.raf, unimportant)
|
||||||
|
);
|
||||||
|
}
|
||||||
function afInterpolateG2(before, after, args) {
|
function afInterpolateG2(before, after, args) {
|
||||||
return g2(
|
return g2(
|
||||||
mix(before.x, after.x, args.rx),
|
mix(before.x, after.x, args.rx),
|
||||||
|
@ -236,6 +243,9 @@ export function SetupBuilders(bindings) {
|
||||||
function alsoThru(rx, ry, raf) {
|
function alsoThru(rx, ry, raf) {
|
||||||
return { type: "interpolate", rx, ry, raf, blender: afInterpolate };
|
return { type: "interpolate", rx, ry, raf, blender: afInterpolate };
|
||||||
}
|
}
|
||||||
|
alsoThru.withOffset = function (rx, ry, deltaX, deltaY, raf) {
|
||||||
|
return { type: "interpolate", rx, ry, deltaX, deltaY, raf, blender: afInterpolateDelta };
|
||||||
|
};
|
||||||
alsoThru.g2 = function (rx, ry, raf) {
|
alsoThru.g2 = function (rx, ry, raf) {
|
||||||
return { type: "interpolate", rx, ry, raf, blender: afInterpolateG2 };
|
return { type: "interpolate", rx, ry, raf, blender: afInterpolateG2 };
|
||||||
};
|
};
|
||||||
|
|
|
@ -14,7 +14,6 @@ export : define [buildCCMP sink glyphStore markGlyphs] : begin
|
||||||
define {chain-rule} : ChainRuleBuilder sink
|
define {chain-rule} : ChainRuleBuilder sink
|
||||||
|
|
||||||
define groupGrekUpperTonos {}
|
define groupGrekUpperTonos {}
|
||||||
define groupTR {}
|
|
||||||
define groupLF {}
|
define groupLF {}
|
||||||
define dotlessFrom {}
|
define dotlessFrom {}
|
||||||
define dotlessTo {}
|
define dotlessTo {}
|
||||||
|
@ -23,7 +22,6 @@ export : define [buildCCMP sink glyphStore markGlyphs] : begin
|
||||||
define TieGlyphs {}
|
define TieGlyphs {}
|
||||||
|
|
||||||
foreach { gid g } [glyphStore.namedEntries] : if (gid.(0) !== "."): begin
|
foreach { gid g } [glyphStore.namedEntries] : if (gid.(0) !== "."): begin
|
||||||
if g.baseAnchors.trailing : groupTR.push gid
|
|
||||||
if g.baseAnchors.lf : groupLF.push gid
|
if g.baseAnchors.lf : groupLF.push gid
|
||||||
if g.baseAnchors.grekUpperTonos : groupGrekUpperTonos.push gid
|
if g.baseAnchors.grekUpperTonos : groupGrekUpperTonos.push gid
|
||||||
if [Dotless.get g] : begin
|
if [Dotless.get g] : begin
|
||||||
|
@ -35,7 +33,6 @@ export : define [buildCCMP sink glyphStore markGlyphs] : begin
|
||||||
TieMarkTo.push [TieMark.get g]
|
TieMarkTo.push [TieMark.get g]
|
||||||
|
|
||||||
define [IotaLF] : UkMapToLookup UnicodeKnowledge.iotaBelowToLfTf
|
define [IotaLF] : UkMapToLookup UnicodeKnowledge.iotaBelowToLfTf
|
||||||
define [OgonekTrailing] : UkMapToLookup UnicodeKnowledge.ogonekBelowToTRTf
|
|
||||||
define [GrekUpperTonosTf] : UkMapToLookup UnicodeKnowledge.upperGrekMarkToTonosTf
|
define [GrekUpperTonosTf] : UkMapToLookup UnicodeKnowledge.upperGrekMarkToTonosTf
|
||||||
|
|
||||||
define [ToneToToneStart toneEnd] : begin
|
define [ToneToToneStart toneEnd] : begin
|
||||||
|
@ -123,13 +120,7 @@ export : define [buildCCMP sink glyphStore markGlyphs] : begin
|
||||||
chain-rule groupLF markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all [IotaLF]
|
chain-rule groupLF markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all [IotaLF]
|
||||||
chain-rule groupLF markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all [IotaLF]
|
chain-rule groupLF markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all [IotaLF]
|
||||||
|
|
||||||
# Ogonek transform (max 6 middle marks are supported)
|
|
||||||
chain-rule groupTR [OgonekTrailing]
|
|
||||||
chain-rule groupTR markGlyphs.all [OgonekTrailing]
|
|
||||||
chain-rule groupTR markGlyphs.all markGlyphs.all [OgonekTrailing]
|
|
||||||
chain-rule groupTR markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all [OgonekTrailing]
|
|
||||||
chain-rule groupTR markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all [OgonekTrailing]
|
|
||||||
chain-rule groupTR markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all [OgonekTrailing]
|
|
||||||
|
|
||||||
define lookupMarks2 : AddLookup sink : object
|
define lookupMarks2 : AddLookup sink : object
|
||||||
.type 'gsub_ligature'
|
.type 'gsub_ligature'
|
||||||
|
@ -235,4 +226,32 @@ export : define [buildCCMP sink glyphStore markGlyphs] : begin
|
||||||
AddCommonFeature sink ccmp
|
AddCommonFeature sink ccmp
|
||||||
EndLookupBlock rec sink
|
EndLookupBlock rec sink
|
||||||
|
|
||||||
|
return ccmp
|
||||||
|
|
||||||
|
export : define [buildCCMPPostCvSs sink ccmpFeature glyphStore markGlyphs] : begin
|
||||||
|
local rec : BeginLookupBlock sink
|
||||||
|
|
||||||
|
define ccmp : AddFeature sink 'ccmp'
|
||||||
|
define {chain-rule} : ChainRuleBuilder sink
|
||||||
|
|
||||||
|
define groupTR {}
|
||||||
|
foreach { gid g } [glyphStore.namedEntries] : if (gid.(0) !== "."): begin
|
||||||
|
if g.baseAnchors.trailing : groupTR.push gid
|
||||||
|
|
||||||
|
define [OgonekTrailing] : UkMapToLookup UnicodeKnowledge.ogonekBelowToTRTf
|
||||||
|
|
||||||
|
define lookupMarks1 : AddLookup sink : object
|
||||||
|
.type 'gsub_chaining'
|
||||||
|
.rules : list
|
||||||
|
# Ogonek transform (max 6 middle marks are supported)
|
||||||
|
chain-rule groupTR [OgonekTrailing]
|
||||||
|
chain-rule groupTR markGlyphs.all [OgonekTrailing]
|
||||||
|
chain-rule groupTR markGlyphs.all markGlyphs.all [OgonekTrailing]
|
||||||
|
chain-rule groupTR markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all [OgonekTrailing]
|
||||||
|
chain-rule groupTR markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all [OgonekTrailing]
|
||||||
|
chain-rule groupTR markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all markGlyphs.all [OgonekTrailing]
|
||||||
|
|
||||||
|
ccmpFeature.lookups.push lookupMarks1
|
||||||
|
EndLookupBlock rec sink
|
||||||
|
|
||||||
define [objectIsNotEmpty obj] : obj && [Object.keys obj].length
|
define [objectIsNotEmpty obj] : obj && [Object.keys obj].length
|
||||||
|
|
|
@ -4,7 +4,7 @@ import as Gr from"../support/gr.mjs"
|
||||||
import [CreateEmptyTable FinalizeTable MoveBackUtilityLookups] from"./table-util.mjs"
|
import [CreateEmptyTable FinalizeTable MoveBackUtilityLookups] from"./table-util.mjs"
|
||||||
|
|
||||||
import [buildLigations] from"./gsub-ligation.mjs"
|
import [buildLigations] from"./gsub-ligation.mjs"
|
||||||
import [buildCCMP] from"./gsub-ccmp.mjs"
|
import [buildCCMP buildCCMPPostCvSs] from"./gsub-ccmp.mjs"
|
||||||
import [buildGrFeature] from"./gsub-gr.mjs"
|
import [buildGrFeature] from"./gsub-gr.mjs"
|
||||||
import [buildFrac] from"./gsub-frac.mjs"
|
import [buildFrac] from"./gsub-frac.mjs"
|
||||||
import [buildCVSS] from"./gsub-cv-ss.mjs"
|
import [buildCVSS] from"./gsub-cv-ss.mjs"
|
||||||
|
@ -39,7 +39,7 @@ define [buildGSUB para glyphStore markGlyphs] : begin
|
||||||
buildGrFeature gsub glyphStore Gr.DenominatorForm
|
buildGrFeature gsub glyphStore Gr.DenominatorForm
|
||||||
|
|
||||||
# ccmp
|
# ccmp
|
||||||
buildCCMP gsub glyphStore markGlyphs
|
local ccmp : buildCCMP gsub glyphStore markGlyphs
|
||||||
|
|
||||||
# frac
|
# frac
|
||||||
buildFrac gsub glyphStore
|
buildFrac gsub glyphStore
|
||||||
|
@ -58,6 +58,9 @@ define [buildGSUB para glyphStore markGlyphs] : begin
|
||||||
if para.enableCvSs : begin
|
if para.enableCvSs : begin
|
||||||
buildCVSS gsub para glyphStore
|
buildCVSS gsub para glyphStore
|
||||||
|
|
||||||
|
# ccmp post cv/ss (for Ogonek shape transform)
|
||||||
|
buildCCMPPostCvSs gsub ccmp glyphStore markGlyphs
|
||||||
|
|
||||||
# locl
|
# locl
|
||||||
# Builds last, but the lookups are added into the beginning of the lookup list
|
# Builds last, but the lookups are added into the beginning of the lookup list
|
||||||
buildLOCL gsub para glyphStore
|
buildLOCL gsub para glyphStore
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue